rgb456rgb 2011-03-25 23:56:00
点我顶贴
收藏
删除
#include<stdio.h>
#include<stdlib.h>
long long n,i,j,k,l,m,p,t,t1,t2,t3,a[110][310][310],s[110][310][310];
int main(){
t1=1000000007;
for (i=1;i<=300;i++){
a[1][i][0]=1;
s[1][i][0]=i;
}
for (i=2;i<=100;i++){
for (j=1;j<=300;j++){
t=1;
for (k=1;k<i;k++){
t*=j;
t%=t1;}
a[i][j][0]=t;
s[i][j][0]=a[i][j][0]+s[i][j-1][0];s[i][j][0]%=t1;
for (k=1;k<=j&&k<i;k++){
a[i][j][k]=a[i-1][j][k]*j+s[i-1][j-1][k-1];a[i][j][k]%=t1;
s[i][j][k]=s[i][j-1][k]+a[i][j][k];s[i][j][k]%=t1;
}
}}
scanf("%d",&t);
for (i=1;i<=t;i++){
scanf("%d%d%d",&n,&m,&p);
printf("%d\n",s[n][m][p]);}
system("pause");
}
近似打表的算法居然可以全部超时。。。。。我无言以对。