【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)
http://acm.hdu.edu.cn/showproblem.php?pid=4704
1.隔板原理
1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板
即求组合数C(N-1,0)+C(N-1,1)+...+C(N-1,N-1)
2.组合数求和公式
C(n,0)+C(n,1)+C(n,2)+.+C(n,n)=2^n
3.费马小定理(降幂)
因为N很大,所以需要费马小定理来降幂
费马小定理是假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。
所以可以把(n-1)对(MOD-1)取余 设余数为K 因为2^(MOD-1)%MOD =1
题目即求2^K %MOD
4.快速幂求解
现在K<=MOD,快速幂的复杂度是O(log₂N),直接套模板就行
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
typedef long long ll;
using namespace std;
const ll mod = 1000000007;ll quick_mod(ll a,ll b)
{ll ans = 1;while(b){if(b&1){ans = (ans*a)%mod;--b;}a = (a*a)%mod;b >>= 1;}return ans;
}int main ()
{char s[100050];while(scanf("%s",s)!=EOF){if(s[0]=='\0')break;ll i,ans = 0;for(i=0;s[i];i++){ans = (ans*10+s[i]-'0')%(mod-1);}printf("%lld\n",quick_mod(2,ans-1));}return 0;
}
同余定理的 简单 应用:LightOJ 1078,HDU 2674,HDU 1212,HDU 2817
【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)相关推荐
- HDU 4704 Sum (费马小定理)
题意 给定一个N,设S(K)表示x1 + x2 + -- + xk = N的解的个数(xi ∈ Z+),求SUM( S(i), 0 <= i <= N ) mod 109+7. 思路 ...
- 西电oj1066 费马小定理
西电oj1066 费马小定理 问题 A: A^B % P 时间限制: 1 Sec 内存限制: 128 MB 提交: 28 解决: 8 [提交][状态][讨论版] 题目描述 输入 输出 样例输入 2 ...
- hdu-4704 sum(费马小定理)
题意:给你一个数n,求1~n之间的 x可以划分不超过k个整数的和 的种类 的和 例如:n = 4; s(1) = 3,s(2) = 5; 通过前几组数据 1 2 3 4 5 6 1 2 4 8 16 ...
- ACM竞赛、数论内容常用的定理(求解(a/b)%c,乘法逆元,费马小定理)
如果b与c互素,则(a/b)%c=a*b^((c)-1)%c其中是欧拉函数.或者(a/b)%c=a*b^(c-2)%c 如果b与c不互素,则(a/b)%c=(a%bc)/b 对于b与c互素和不互素都有 ...
- 费马小定理+插板法 - Sum(HDU4704)
传送门 Analysis 绝对是题目描述的问题 注意: 在这道题中1+1+2=41+1+2=41+1+2=4 和 1+2+1=41+2+1=41+2+1=4是两种不同的方案 但2+2=42+2=42+ ...
- 费马小定理在ACM中的应用
费马小定理 假如p是素数,且 (a,p)=1 ( a , p ) = 1 (a,p)=1,那么a^(p-1)≡1(mod p) ① 判断素数,对于大素数的判定,Miller-Rabin 素数判定 ②求 ...
- 费马小定理与欧拉定理 原理与证明
一.欧拉定理 1.定义 若a与n互质,则aφ(n)≡1a^{\varphi (n)} \equiv 1aφ(n)≡1 (mod n). 其中φ(n)\varphi (n)φ(n)指欧拉函数:小于n的正 ...
- 杭电oj1620题c语言答案,杭电oj部分水题 c语言源代码.doc
杭电oj部分水题 c语言源代码 殿剐忱酪短祭幂曝沈脸蛀蓑挞姻扶宠秤蓄幌榆矾巨旷于渍弯史影得熄孟椒菊葫彦籍蛛绊趣庙捣载睹答赊索添垛蝎伙生瞎回悟辅篇狱辗歧病氯急迸怜煽跋屋凡逻甲确烧迟卞姻郸被康少辊蒂刽厂礁 ...
- 杭电OJ——ACM 1003.Max Sum
Max Sum 杭电OJ--ACM 1003.Max Sum链接入口 问题描述 大意: 给定一个序列a[1],a[2],a[3]-a[n],你需要算出其子序列中的最大值.比如说:给你一个 ...
最新文章
- Android博客文章整理
- IE6Bug,外层container设置了overflow:auto,但是内层嵌套元素有position:relative的时候,显示错误。...
- C 语言链表其他实现
- 破解入门(六)-----实战“内存镜像法”脱壳
- Python XML 解析
- php重写地址,php url地址重写
- PHP起点 - 运算符
- pssh批量远程管理
- 爆笑~~偶和老公滴愚人笑话~~~
- 固态硬盘是什么接口_了解移动固态硬盘接口知识,告诉你PSSD到底能多快
- java中高级面试_中高级面试常问:Java面向对象设计的六大原则
- 大数据BI解决方案:医疗行业的数据治理
- codeforces1567B
- 广东计算机一级试题答案,广东计算机一级考试试题和答案
- 在K8s上部署Redis 集群
- shell中base64编解码的使用
- C/C++ 延时函数 (标准库)
- 本周最新文献速递20220522
- 3GPP TS 23502-h20 中英文对照 | 4.4.1.3 N4 Session Modification procedure
- 01.消消乐填充的算法