hdu-4704 sum(费马小定理)
2014-04-14 16:35
411 查看
题意:给你一个数n,求1~n之间的 x可以划分不超过k个整数的和 的种类 的和
例如:n = 4; s(1) = 3,s(2) = 5;
通过前几组数据
1 2 3 4 5 6
1 2 4 8 16 32
可以发现答案就是2^(n-1)% 1000000007;
2^(n-1) % 1000000007=2^((n-1)% 1000000006))% 1000000007;
如果还不懂,比较详细的讲解:http://www.cnblogs.com/disclingclang/p/3280136.html
例如:n = 4; s(1) = 3,s(2) = 5;
通过前几组数据
1 2 3 4 5 6
1 2 4 8 16 32
可以发现答案就是2^(n-1)% 1000000007;
2^(n-1) % 1000000007=2^((n-1)% 1000000006))% 1000000007;
/* 费马小定理 假如p是质数,且(a,p)=1,那么 a^(p-1) ≡1(mod p)。 即:假如a是整数,p是质数,且a,p互质,那么a的(p-1)次方除以p的余数恒等于1。 */ #include<stdio.h> #include<string.h> #include<math.h> typedef __int64 LL; #define MOD 1000000007 #define mod 1000000006 void fast_pow(LL x,LL num)//快速幂 { LL res = 1; while(num) { if(num&1) res = (res * x) % MOD; x = (x*x)%MOD; num>>=1; } printf("%I64d\n",res); } int main() { char str[100005]; LL len,sum,i; while(~scanf("%s",str)) { len = strlen(str); sum = 0; for(i = 0;i < len;i++) sum = (sum * 10 + str[i] - '0') % mod; sum--; fast_pow(2,sum); } }
如果还不懂,比较详细的讲解:http://www.cnblogs.com/disclingclang/p/3280136.html
相关文章推荐
- 盘点2014年最赚钱的行业 你在其中吗?
- TinyXml快速入门
- Linux Shell sed(流编辑器)
- 关于 IOS 发布的点点滴滴记录(一)
- DAY18--java中你必须知道的23种经典模式开发Design Patterns
- display_errors
- STL中的常用的vector,map,set,Sort用法
- 线性索引查找 - 概念
- 【LeetCode】Unique Binary Search Trees
- flex&bison 1
- 秋天里的夕阳
- Ubuntu root密码
- Oracle 索引质量分析
- 传统网吧风光不再 玩家上座率不足50%
- 如何在django查看一个group里的所有user
- android 手机设备找不到 DDMS
- 安装node.js,npm,mongodb
- .Net应用程序打包部署总结
- IOS中多版本,多设备类型支持注意事项
- html5的canvas元素使用方法介绍(画矩形、画折线、圆形)