自测时间: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); }