C语⾔阶乘计算——蓝桥杯
阶乘计算
题⽬描述:输⼊⼀个正整数n,输出n!的值。其中n!=123*…*n。算法描述:n!可能很⼤,⽽计算机能表⽰的整数范围有限,需要使⽤⾼精
度计算的⽅法。使⽤⼀个数组A来表⽰⼀个⼤整数a,A[0]表⽰a的个位,A[1]表⽰a的⼗位,依次类推。将a乘以⼀个整数k变为将数组A的
每⼀个元素都乘以k,请注意处理相应的进位。⾸先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。
输⼊解释:输⼊包含⼀个正整数n,n<=1000。
输出解释:输出n!的准确值。
输⼊样例:10
输出样例:3628800
#include
#defineMAX10000
main(){
intn,i,j,tmp,up;
chara[MAX+1]={1};
scanf("%d",&n);
//计算进位
for(i=2;i<=n;i++){
for(up=0,j=0;j<=MAX;j++){
tmp=a[j]*i+up;
a[j]=tmp%10;
up=tmp/10;
}
}
//输出
for(i=MAX;i>=0;i--){
if(a[i]!=0){
for(i;i>=0;i--){
printf("%d",a[i]);
}
}
}
}
本文发布于:2022-11-12 23:44:39,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/7418.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |