大幂计算和大阶乘计算【C语言】
- 游戏开发
- 2025-09-06 00:57:02

大幂计算: #include<stdio.h> long long int c[1000000]={0}; int main() { long long a,b,x=1; c[0]=1; printf("请输入底数:"); scanf("%lld",&a); printf("请输入指数:"); scanf("%lld",&b); for(int i=0;i<b;i++) { if(x>99900){ printf("太大了!无法计算!"); return 0; } for(int j=0;j<x;j++) { c[j]*=a; } for(int j=0;j<x;j++) { if(c[j]>9){ for(int k=j;k<x;k++) { if(c[k]<9)break; if(k==x-1)x++; c[k+1]+=c[k]/10; c[k]%=10; } } } } printf("%lld^%lld=",a,b); for(int i=x-1;i>=0;i--) { if(i==x-1&&c[i]==0){ x--; continue; } printf("%lld",c[i]); } printf("\n结果共计%lld位数!",x); return 0; } 大阶乘计算 : #include<stdio.h> long long int c[1000000]; int main() { long long a,x=1; c[0]=1; printf("请输入阶数:"); scanf("%lld",&a); for(int i=2;i<=a;i++) { if(x>999000){ printf("太大了!无法计算!"); return 0; } for(int j=0;j<x;j++) { c[j]*=i; } for(int j=0;j<x;j++) { if(c[j]>9){ for(int k=j;k<x;k++) { if(c[k]<9)break; if(k==x-1)x++; c[k+1]+=c[k]/10; c[k]%=10; } } } } printf("%lld!=",a); for(int i=x-1;i>=0;i--) { if(i==x-1&&c[i]==0){ x--; continue; } printf("%lld",c[i]); } printf("\n结果共计%lld位数!",x); return 0; } 应用的题:
P1009 [NOIP 1998 普及组] 阶乘之和 .luogu /problem/P1009题解代码
#include<stdio.h> int as(int a,int c[]){ int x=1; c[0]=1; for(int i=2;i<=a;i++) { for(int j=0;j<x;j++) { c[j]*=i; } for(int j=0;j<x;j++) { if(c[j]>9){ for(int k=j;k<x;k++) { if(c[k]<9)break; if(k==x-1)x++; c[k+1]+=c[k]/10; c[k]%=10; } } } } return x; } int main() { int a,exp=0; int data[100]={0}; scanf("%d",&a); for(int i=1;i<=a;i++){ int temp[100]={0},b; b=as(i,temp); if(b>exp)exp=b; for(int j=0;j<exp;j++){ data[j]+=temp[j]; if(data[j]>9){ data[j+1]++; data[j]%=10; if(j==exp-1)exp++; } } } for(int i=exp-1;i>=0;i--){ printf("%d",data[i]); } return 0; }大幂计算和大阶乘计算【C语言】由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“大幂计算和大阶乘计算【C语言】”