1.
2. 代码
3. 算法思路:例如256*12;
等同于256中的每位分别乘12;
(1)6*12=72;72%10=2(为个位);72/10=7(等会加到十位);
(2)5*12+7=67;67%10=7(为十位);67/10=6(等会加到百位);
(3)2*12+6=30;30%10=0(为百位);30/10=3(加到千位);
(4)千位仅有3;
所以得出结果:3072;
4. 原码
void Print_Factorial ( const int N ){
if(N<0){
printf("Invalid input\n");
return;
}
int a[3000];
a[0]=1; //n为0或1时阶乘值也为1
int length=1; //记录数组长度
for(int i=2;i<=N;i++){
int z=0;
for(int k=0;k<length;k++){
int t=i*a[k]+z;
a[k]=t%10;
z=t/10;
}
while(z){
a[length++]=z%10;
z=z/10;
}
}
for(int i=length-1;i>=0;i--)
printf("%d",a[i]);
}