解题思路:
参考代码:
#include<stdio.h> #include<stdlib.h> const int maxn=1e5+5; int a[maxn]; int main(){ int n,c,d=0; scanf("%d",&n); //初始化结束 a[0]=1; //开始计算阶乘 for(int i=2;i<=n;i++){ c=0;//每次相乘时,进位存储器需要更新为0 for(int j=0;j<maxn;j++){ d=a[j]*i+c;//a[j]是当前被乘i的哪一位上的数字,"+c"是进位 a[j]=d%10;//模10,是计算个位上的数字,赋值给f[j] c=d/10; //除10,是取10位上的数字 } } for(int i=maxn-1;i>=0;i--){ if(a[i]!=0){ for(int k=i;k>=0;k--){ printf("%d",a[k]); } break; } } printf("\n"); return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:578 |
兰顿蚂蚁 (C++代码)浏览:1044 |
用筛法求之N内的素数。 (C语言代码)浏览:646 |
Minesweeper (C语言描述,蓝桥杯)浏览:1125 |
sizeof的大作用 (C语言代码)浏览:1450 |
A+B for Input-Output Practice (I) (C语言代码)浏览:573 |
C语言程序设计教程(第三版)课后习题10.1 (C++代码)浏览:497 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:523 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1181 |
逆反的01串 (C语言代码)浏览:1438 |