给一个数字,把他分成若干份,求乘积最大
来源:互联网 发布:淘宝店铺装修特效 编辑:程序博客网 时间:2024/05/22 00:22
原理即是要尽量多的弄出3
#include <iostream>#include"cstdio"using namespace std;long long quick(long long a,long long b,long long c){ long long ans=1; a=a%c; while(b>0) { if(b%2==1) ans=(ans*a)%c; b=b/2; a=(a*a)%c; } return (long long)ans;}int main(){ int t,i; long long k; scanf("%d",&t); for(i=0;i<t;i++){ scanf("%lld",&k); if(k==1){ printf("1\n"); continue; } if(k%3==1) printf("%lld\n",(4*quick(3,(k-4)/3,1000000007))%1000000007); if(k%3==2) printf("%lld\n",(2*quick(3,(k-2)/3,1000000007))%1000000007); if(k%3==0) printf("%lld\n",quick(3,k/3,1000000007)); } return 0;}
错误原因:没想到快速幂能解决那么大的数据(3的3000万次),递归的解决太麻烦而且不是很正确。
阅读全文
0 0
- 给一个数字,把他分成若干份,求乘积最大
- 一个正整数n被分成若干个不同自然数的和,求组成n的一组自然数的最大乘积
- 如何把一个1:3的矩形分成若干份,然后拼成一个正方形
- LA 4384 求把一个矩形分成长宽相等的若干小矩形
- 把一个整数划分成若干个质数的和
- 把你的收入分成五份
- 把你的收入分成五份
- 把mp3分成n份之后合并
- 给一个数组,求他的子串,使该子串的和最大
- 把自然数N分解成若干个互不相同的正整数,使乘积最大
- 连续数字最大乘积
- 求乘积最大组
- 邮票分你一半小珂最近收集了些邮票,他想把其中的一些给他的好朋友小明。每张邮票上都有分值,他们想把这些邮票分成两份,并且使这两份邮票的分值和相差最小(就是小珂得到的邮票分值和与小明的差值最小),现在每张
- 输入一个集合,求集合内最大乘积
- 求一个数组中连续子数组的最大乘积
- 把一个数组分成四份,三个分割点不算进求和中,使得每份的和要相同。
- 将一个正整数拆分成若干个互不相同的正整数且乘积最大(JS)
- 将一个正整数拆分成若干个互不相同的正整数且乘积最大(JS)
- 自定义组合控件
- Java实现文件的遍历 类型匹配(图形化界面)
- 技巧_字符界面与图形界面之间的转换_telinit改变运行级别
- 机房重构——父窗体、子窗体的显示
- linux权限管理
- 给一个数字,把他分成若干份,求乘积最大
- Redis 字典
- python socket编写端口扫描器
- 设计模式6大设计原则解读——单一职责原则
- kaldi002 -- kaldi是如何使用决策树的
- 洛谷 P1402 酒店之王
- POJ 1700 Crossing River 笔记
- UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 458: ordinal not in range(128)
- 近期学习总结