N!

来源:互联网 发布:淘宝卖家寄恐怖东西 编辑:程序博客网 时间:2024/06/10 06:00

#include<stdio.h>#include<string.h>int main(){int n,i,j;int a[10005];scanf("%d",&n);memset(a,0,sizeof(a));a[0]=1;for(i=2;i<=n;i++){int tmp=0;for(j=0;j<10005;j++){tmp+=a[j]*i;a[j]=tmp%100;//结合数学运算知识,本位为进位+乘数之积的对10000的余数tmp/=100;//对上一位的进位}}j=10004;while(!a[j])j--;printf("%d",a[j]);for(i=j-1;i>=0;i--)printf("%02d",a[i]);//这主要是考虑到最后的几个数组都是0,但应该凑足位数,所以应补够0}


算法思想是把大数据存到10005个数组中。

比如20!

0,0,0,0,0,0.......

1,0,0,0,0,0.......

2,0,0,0,0,0.......

...

...

5040,0,0,0,0,0...

320,4,0,0,0,0...(5040*8=4*10000+320)



原创粉丝点击