前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NOIP2011计算系数详解[通俗易懂]

NOIP2011计算系数详解[通俗易懂]

作者头像
全栈程序员站长
发布2022-11-09 21:44:17
2070
发布2022-11-09 21:44:17
举报

大家好,又见面了,我是你们的朋友全栈君。

原题见洛谷(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(其实没必要) 代码:

代码语言:javascript
复制
#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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/189663.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年9月25日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档