1 条题解
-
-1
#include<stdio.h> int main() { int n; int num[100000]; int i,j; scanf("%d",&n); int l; l=1; num[1]=1; //这里初始化为1,不然后面乘都等于0,我们这里以1为下标开始,因为符合我们正常的阅读 for(i=1;i<=n;i++) { for(int j=1;j<=l;j++) { num[j]*=i; //这里其实就是上面说的每一位乘i } for(j=1;j<=l;j++) { num[j+1]+=num[j]/10;//这里其实就是进位表示的方法 num[j]%=10; } if(num[j]>0){ //这里其实就是判断位数的代码,方便在下面输出找到下标位置 while(num[j]>10) { num[j+1]+=num[j]/10; num[j]%=10; j++; } l=j; } } for(i=l;i>=1;i--){ //注意这里是逆向输出,比如120,则他的0是第一位,2是第二位,1是第三位 printf("%d",num[i]); } return 0; }
信息
- ID
- 496
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 64
- 已通过
- 25
- 上传者