求阶乘,注意数据范围,要用高精。
#include<cstdio> #include<cstring> int a[300]; int n,x,y,l,i,j; int main(){ for (scanf("%d",&n);n--;){ scanf("%d",&x); memset(a,0,sizeof(a)); a[1]=1;l=1; for (i=1;i<=x;i++){ y=0; for (j=1;j<=l;j++){ a[j]=a[j]*i+a[j-1]/10; a[j-1]%=10; } while(a[l]>9){a[++l]=a[l-1]/10;a[l-1]%=10;} } for (i=l;i;i--)printf("%d",a[i]); printf("\n"); } }
时间: 2024-12-28 14:35:45