fzu 2238 Daxia & Wzc's problem
2017-11-11 20:59
369 查看
http://acm.fzu.edu.cn/problem.php?pid=2238
找规律题,只要想到对于m行第i个数,a和d的贡献次数即可,
然后用Lucas算法求一下分类组合数即可。。。
找规律题,只要想到对于m行第i个数,a和d的贡献次数即可,
然后用Lucas算法求一下分类组合数即可。。。
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long LL; LL Power_mod(LL a, LL b, LL p) { LL res = 1; while(b!=0) { if(b&1) res = (res*a)%p; a = (a*a)%p; b >>= 1; } return res; } LL Comb(LL a,LL b, LL p) { if(a < b) return 0; if(a == b) return 1; if(b > a-b) b = a-b; LL ans = 1, ca = 1, cb = 1; for(LL i=0; i<b; ++i) { ca = (ca*(a-i))%p; cb = (cb*(b-i))%p; } ans = (ca*Power_mod(cb, p-2, p))%p; return ans; } LL Lucas(int n, int m, int p) { LL ans = 1; while(n && m && ans) { ans = (ans * Comb(n%p, m%p, p))%p; n /= p; m /= p; } return ans; } int main() { int a,d,m,i; while(scanf("%d%d%d%d",&a,&d,&m,&i) !=EOF) { long long int ans1=Lucas(i+m-1,m,1000000007)*a%1000000007; long long int ans2=Lucas(i+m-1,m+1,1000000007)*d%1000000007; long long int ans=(ans1+ans2)%1000000007; printf("%lld\n",ans); } return 0; }
相关文章推荐
- FZU Problem 2238 Daxia & Wzc's problem(Lucas定理求组合数)
- fzu 2238 Daxia & Wzc's problem
- FZU 2238 Daxia & Wzc's problem
- 【数论】FOJ 2238 Daxia & Wzc's problem
- FZU 2238 Daxia & Wzc's problem【规律+lucas】
- FZU 2238 - Daxia & Wzc's problem(Lucas)
- FZU Problem 2238 Daxia & Wzc's problem
- Problem 2238 Daxia & Wzc's problem 1627 瞬间移动
- FZU 2238 Daxia & Wzc's problem
- FOJ有奖月赛-2016年8月 Problem A Daxia & Wzc's problem(找规律)
- FZU 2240 Daxia & Suneast's problem
- FZU Problem 2062 Suneast & Yayamao
- FZU 8月有奖月赛A Daxia & Wzc's problem (Lucas)
- 【数论】FOJ 2238 Daxia & Wzc's problem
- FZU 2239 Daxia & Yayamao's problem 斜率优化
- FZU Problem 1230 区间相交问题 &&XTU 1151 bus
- FZU Problem 2244 Daxia want to buy house
- FOJ 有奖月赛 2016-8 C Problem C Daxia & Suneast's problem
- FZU-2239 Daxia & Yayamao's problem(斜率优化)
- POJ - 3320 Jessica's Reading Problem(尺取法)