HDOJ 4704 Sum
来源:互联网 发布:顶级域名的两大类 编辑:程序博客网 时间:2024/06/05 16:07
Sum
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 2396 Accepted Submission(s): 995
Problem Description
Sample Input
2
Sample Output
2Hint1. For N = 2, S(1) = S(2) = 1.2. The input file consists of multiple test cases.
看题意看了大半天系列,给你一个数字n,把n拆分成1,2......n份,求所有的方案数,隔板法,先把n分成n个1,那么里面有n-1个空格,我们用隔板来划分这n-1个一,如果要2份,就在这n-1个空格里面放1个,也就是c(n-1,1),依次类推,从c(n-1,0)+......c(n-1,n-1),用二次项定理可得为2的n-1次方,但是n灰常的大,这里使用费马小定理来降幂取模,
费马小定理:如果(a,p)互质,那么a^(p-1)%p=1,根据这个我们可以得出 2^((n-1)%(p-1))%p;然后求出n对mod 的取模过后用快速幂就行了。
#include<stdio.h>#include<algorithm>#include<string>#include<string.h>#include<queue>#include<math.h>using namespace std;long long mod;long long quick(long long x,long long m){ long long ans=1; while(m>0) { if(m%2==1) { ans*=x; ans%=mod; } x=x*x; x%=mod; m/=2; } return ans;}int main(){ long long n; char s[200000]; while(scanf("%s",s)!=EOF) { mod=1000000006; n=0; int len=strlen(s); for(int i=0;i<len;i++) { n=n*10+s[i]-'0'; if(n>=mod) n%=mod; } n--; if(n<0) n+=mod; mod++; printf("%lld\n",quick(2,n)); }return 0;}
0 0
- HDOJ 4704 Sum
- HDOJ 4704 Sum 规律 欧拉定理
- HDOJ Sum 4704【费马小定理+快速幂】
- hdoj 4704 Sum 【费马小定理 + 快速幂】
- HDOJ 5150 Sum Sum Sum Miller_Rabin
- HDOJ 1003 Max Sum
- HDOJ 1003 Max Sum
- hdoj 1003 Max Sum
- HDOJ 1003 Max Sum
- hdoj 1003Max Sum
- HDOJ 1003 Max Sum
- HDOJ 1003 Max Sum
- HDOJ--1003Max Sum
- hdoj 1003 Max Sum
- HDOJ 1001 Sum Problem
- HDOJ 1003 Max Sum
- HDOJ Sum Problem
- HDOJ 1003 Max Sum
- dialog点击外边关闭 dialog自定义尺寸 sqlite自增长 修改权限列表变量更新数据库
- 字符处理函数
- 练习题目-分数字
- STM32 xPSR影响的条件指令
- pptpd vpn手动分配IP部分用户无法上网
- HDOJ 4704 Sum
- Spring Boot学习总结(3)——SpringBoot魅力所在
- okhttp3实现注册登陆
- 数组中奇偶元素分离算法
- Android : ViewPager+RecyclerView的联动效果
- session什么情况下会改变
- string检索
- ORB-SLAM2搭建详细过程
- hdu 1711 Number Sequence (kmp)