标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4981 Accepted Submission(s): 2085
#include<cstdio> #include<cstring> int a[390]; int n,m,leap; void bfact(int n) { int i,j; for(i=2; i<=n; i++) { if(leap&&i==m+1) continue; int c=0,s; for(j=0; j<380; j++) { s=i*a[j]+c; a[j]=s%10; c=s/10; } } } void bx(int n) { int j; int s,c=0; for(j=0; j<380; j++) { s=n*a[j]+c; a[j]=s%10; c=s/10; } } int main() { //freopen("case.in","r",stdin); int i,j,c=1; while(scanf("%d%d",&m,&n)!=-1) { if(!m&&!n) break; leap=0; memset(a,0,sizeof(a)); a[0]=1; printf("Test #%d:\n",c); if(m<n) { printf("0\n"); c++; continue; } if((m-n+1)%(m+1)==0) bx((m-n+1)/(m+1)); else { bx(m-n+1); leap=1; } bfact(n+m); for(i=380; i>=0; i--) if(a[i]) break; for(j=i; j>=0; j--) printf("%d",a[j]); printf("\n"); c++; } } //从网上找到了公式 即:结果等于 (m+n)!*(m-n+1)/(m+1) //那么这题就是高精度问题了
标签:
原文地址:http://www.cnblogs.com/orchidzjl/p/4314408.html