题目描述
输入一个整数n,输出n的阶乘(每组测试用例可能包含多组数据,请注意处理)
输入描述:
一个整数n(1<=n<=20)
输出描述:
n的阶乘
示例1
输入
3
输出
6</pre>
解题心得:
- 高精度乘法的原理与高精度加法类似,用将要乘的小乘数来乘高精度整数的每一位数并加上来自低位的进位,从而得到该位的结果以及向高位的进位。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
typedef struct bigInteger{
int digit[1001];
int size;
}bigInteger;
int main(){
int a;
while(scanf("%d",&a)!=EOF){
bigInteger A;
int i,j;
A.size=1;
A.digit[0]=1;
for(i=1;i<1001;i++){
A.digit[i]=0;
}
int carry=0,tmp;
for(j=1;j<=a;j++){
carry=0;
for(i=0;i<A.size;i++){
tmp=A.digit[i]*j+carry;
carry=tmp/10000;
A.digit[i]=tmp%10000;
}
if(carry>0){
A.digit[A.size++]=carry;
}
}
for(i=A.size-1;i>=0;i--){
if(i==A.size-1){
printf("%d",A.digit[i]);
}
else{
printf("%04d",A.digit[i]);
}
}
printf("\n");
}
return 0;
}
方若棋盘,圆若棋子,动若棋生,静若棋死
方若行义,圆若用智,动若聘才,静若得意
网友评论