大数阶乘
发布时间:2020-12-14 04:08:51 所属栏目:大数据 来源:网络整理
导读:#includestdio.h#includestring.hint main(){int Data[10001];int digit;int i,j,r,k;int N;memset(Data,sizeof(Data));Data[1]=1;digit=1;printf("Enter a number what you want to calculus:n");scanf("%d",N);for(i=1;iN+1;i++){for(j=1;jdigit+1;j++)Da
#include<stdio.h> #include<string.h> int main(){ int Data[10001]; int digit; int i,j,r,k; int N; memset(Data,sizeof(Data)); Data[1]=1; digit=1; printf("Enter a number what you want to calculus:n"); scanf("%d",&N); for(i=1;i<N+1;i++) { for(j=1;j<digit+1;j++) Data[j]*=i; for(j=1;j<digit+1;j++){ if(Data[j]>10){ for(r=j;r<digit+1;r++){ if(Data[digit]>9) digit++; Data[r+1]+=Data[r]/10; Data[r]=Data[r]%10; } } } } printf("%d",digit); return 0; } 32000 这个数还不能处理。 不知道 int 所能表示的最大数组为多少。 修改如下: #include<stdio.h> #include<string.h> #include<time.h> static int Data[200001]; int main(){ clock_t start,finsh; double duration; start=clock(); int digit; int i,r; int N,M; scanf("%d",&M); while(M--){ memset(Data,sizeof(Data)); Data[1]=1; digit=1; scanf("%d",&N); for(i=1;i<N+1;i++) { for(j=1;j<digit+1;j++) Data[j]*=i; for(j=1;j<digit+1;j++){ if(Data[j]>10){ for(r=j;r<digit+1;r++){ if(Data[digit]>9) digit++; Data[r+1]+=Data[r]/10; Data[r]=Data[r]%10; } } } } printf("%dn",digit); } finsh=clock(); duration=(double)(finsh-start)/CLOCKS_PER_SEC; printf("%f secondsn",duration); return 0; } 论坛大神给的如下: #include <stdio.h> #include <string.h> #include <malloc.h> int main(){ int *Data; int digit; int i,k; int N; Data=(int *)calloc(10000000,sizeof(int)); if (NULL==Data) { printf("Can not calloc 10000000 int!n"); return 1; } Data[1]=1; digit=1; printf("Enter a number what you want to calculus:n"); scanf("%d",&N); for (i=1;i<N+1;i++) { for (j=1;j<digit+1;j++) Data[j]*=i; for (j=1;j<digit+1;j++) { if (Data[j]>10) { for (r=j;r<digit+1;r++) { if (Data[digit]>9) digit++; Data[r+1]+=Data[r]/10; Data[r ] =Data[r]%10; } } } } printf("%d",digit); free(Data); return 0; }详细关于全局变量与局部变量区别,以及栈与堆链接如下http://blog.csdn.net/lavendermaple/article/details/8986096 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |