首页 > 其他 > 详细

【NOIP2011提高组】计算系数

时间:2019-07-30 23:47:14      阅读:117      评论:0      收藏:0      [点我收藏+]

P1313 计算系数

杨辉三角(性质)+滚动数组(一种存储杨辉三角的方法,灵感由01背包而来)。

水题,调试有些麻烦,不过思路极其容易理解~

记住取模,时时刻刻取模,读入也要取模(因此我丢了20分)!

技术分享图片
#include<bits/stdc++.h>
using namespace std;
int f1=1,f2=1,a,b,k,n,m,ans,yh[1005]= {0,1},yh2[1005]= {0,1};
void yanghui(int x)
{
    if(x%2==0)
        for(int i=2; i<=x+1; i++)
            yh2[i]=(yh[i-1]+yh[i])%10007;
    else if(x%2==1)
        for(int i=2; i<=x+1; i++)
            yh[i]=(yh2[i-1]+yh2[i])%10007;
    if(x+1!=k)
        yanghui(x+1);
}
int fang()
{
    for(int i=1; i<=n; i++)
        f1=(f1*a)%10007;
    for(int i=1; i<=m; i++)
        f2=(f2*b)%10007;
    return (f1*f2)%10007;
}
int main()
{
    //freopen("factor.in","r",stdin);
    //freopen("factor.out","w",stdout);
    scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
    a=a%10007,b=b%10007;
    if(k==0||k==1)
    {
        cout<<0;
        return 0;
    }
    k++;
    yanghui(1);
    k--;
    if(k%2==1)ans=(fang()*yh[n+1])%10007;
    if(k%2==0)ans=(fang()*yh2[k-n+1])%10007;
    printf("%d",ans);
}
AC

 

【NOIP2011提高组】计算系数

原文:https://www.cnblogs.com/yige2019/p/11273185.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!