自测时间:2017.4.12 8:15——11:45

实际得分:100+0+0=100

期望得分:100+100+0=260

T2 符合要求的总价值*符合要求的总个数

    写成:符合要求的总价值*区间总个数

T3 正解贪心,DP式子退错了

http://cogs.pro/cogs/page/page.php?aid=16

 

T1 计算系数

时间限制:1 s   内存限制:128 MB

【问题描述】 
给定一个多项式 m 项的系数。 
【输入】 
输入文件名为 factor.in。 
共一行,包含 5 个整数,分别为 a,b,k,n,m,每两个整数之间用一个空格隔开。 
【输出】 
输出文件名为 factor.out。 
输出共 1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对 10007 取模后的结果。 

【输入输出样例】

factor.in

1 1 3 1 2

factor.out

3

【数据范围】 
对于 30%的数据,有 

 

递推杨辉三角

按x的指数升序排列,杨辉三角中第k+1行,m+1列为 m项的系数

ans=f[k+1][m+1]*a^n*b^m

#include<cstdio>
#define mod 10007
int a,b,k,n,m,ans=1;
int f[1011][1011];
using namespace std;
void mul(int a,int b)
{
    a%=mod; b%=mod;
    for(;b;b>>=1,a=a*a%mod)
     if(b&1) ans=ans*a%mod;
}
int main()
{
    freopen("factor.in","r",stdin);
    freopen("factor.out","w",stdout);
    scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
    for(int i=1;i<=k+1;i++) f[i][0]=1;
    for(int i=1;i<=k+1;i++)
     for(int j=1;j<=m;j++)
      f[i][j]=(f[i-1][j]+f[i-1][j-1])%mod;
    mul(a,n);
    mul(b,m);
    ans=ans*f[k+1][m]%mod;
    printf("%d",ans);
}
#include<cstdio>
#define mod 10007
int a,b,k,n,m,ans=1;
int f[1011][1011];
using namespace std;
void mul(int a,int b)
{
    a%=mod; b%=mod;
    for(;b;b>>=1,a=a*a%mod)
     if(b&1) ans=ans*a%mod;
}
int main()
{
    freopen("factor.in","r",stdin);
    freopen("factor.out","w",stdout);
    scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
    for(int i=1;i<=k+1;i++) f[i][0]=1;
    for(int i=1;i<=k+1;i++)
     for(int j=1;j<=m;j++)
      f[i][j]=(f[i-1][j]+f[i-1][j-1])%mod;
    mul(a,n);
    mul(b,m);
    ans=ans*f[k+1][m]%mod;
    printf("%d",ans);
}
View Code

相关文章: