NOIP2011计算系数详解
2017-10-09 17:42
302 查看
原题见洛谷(https://www.luogu.org/problem/show?pid=1313)
想看稍微简单点的就是NOIP2016的组合数问题,小飞机~(http://blog.csdn.net/a1351937368/article/details/76907902)
先说一下这道题需要用到:组合数(杨辉三角),乘方
做这道题的感受:题目中说(by+ax)^k,而输入顺序是先a后b搞得我60分emmmm,膜10007记得要开long long有可能会爆int
根据二项式定理,(x+y)^k中x^m*y^(k-m)的系数为C(k,m)
让我们改装一下:(ax+by)^k中x^m*y^(k-m)的系数为C(k,m)*a^m*b^(k-m)
然后这道题就可以乖乖的AC啦~再加点玄学卡常数和优化这道题总时间0ms(其实没必要)
代码:
想看稍微简单点的就是NOIP2016的组合数问题,小飞机~(http://blog.csdn.net/a1351937368/article/details/76907902)
先说一下这道题需要用到:组合数(杨辉三角),乘方
做这道题的感受:题目中说(by+ax)^k,而输入顺序是先a后b搞得我60分emmmm,膜10007记得要开long long有可能会爆int
根据二项式定理,(x+y)^k中x^m*y^(k-m)的系数为C(k,m)
让我们改装一下:(ax+by)^k中x^m*y^(k-m)的系数为C(k,m)*a^m*b^(k-m)
然后这道题就可以乖乖的AC啦~再加点玄学卡常数和优化这道题总时间0ms(其实没必要)
代码:
#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> const int maxn=1500; int c[maxn][maxn]; inline int read(){ int num; char ch; while((ch=getchar())<'0' || ch>'9'); num=ch-'0'; while((ch=getchar())>='0' && ch<='9'){ num=num*10+ch-'0'; } return num; } inline void out(int x){ if(x>=10){ out(x/10); } putchar(x%10+'0'); } inline int time(int p,int q){ if(q==0){ return 1; } long long ans=1; for(register int i=1;i<=q;++i){ ans*=p,ans%=10007; } return ans; } int main(){ int b=read(),a=read(),k=read(),n=read(),m=read(); long long ans; c[0][0]=1; for(register int i=1;i<=k;++i){ c[i][0]=c[i][i]=1; } for(register int i=1;i<=k;++i){ for(register int j=1;j<i;++j){ c[i][j]=(c[i-1][j]+c[i-1][j-1])%10007; } } ans=c[k][m]*(time(a,m)*time(b,n)%10007)%10007; out(ans); return 0; }
相关文章推荐
- [1st. Aug. 16] NOIP 2011 计算系数——纠结了很久才发现原来第一次做就大体做对了
- NOIP 2011 计算系数
- noip2011 计算系数
- 题目:[NOIP 2011]计算系数
- NOIP2011 计算系数
- NOIP2011复赛提高组day2(A:计算系数 B:聪明的质监员 C:观光公交)
- NOIP 2011 Day2 T1 计算系数
- vijos p1739(计算系数(NOIP 2011系列))
- noip2011提高组——计算系数
- 计算系数(NOIP2011提高组Day2T1)
- noip 2011 提高组 计算系数
- NOIP2011 计算系数
- 【noip2011】【codevs1137】计算系数
- [NOIP 2011]计算系数 乘法逆元+扩展欧几里得
- NOIP 2011 提高组 复赛 day2 factor 计算系数
- NOIP 2011 提高组 计算系数
- 计算系数(noip2011)
- NOIp2011 计算系数
- 【NOIP2011】计算系数
- noip2011 计算系数