4-10 阶乘计算升级版*
2017-03-11 20:20
302 查看
#include"stdio.h"
void Print_Factorial ( const int N )
{
int mup=1;
if(N<0){printf("Invalid input");return;}
if(N==0){printf("%d",mup);return;}
if(N<=12)
{
for(int i=1;i<=N;i++)
mup=mup*i;
printf("%d",mup);
}
else
{
if(N<=1000&&N>12)
{
int site[10000]={0};
int n=0;
int k=1;
int temp=0;
site[0]=1;
for(int i=2;i<=N;i++)
{
for(int j=0;j<k;j++)
{
temp=site[j]*i+n;
site[j]=temp%10;
n=temp/10;
}
while(n!=0)
{
site[k]=n%10;
k++;
n=n/10;
}
}
for(int l=k-1;l>=0;l--)
printf("%d",site[l]);
return;
}
}
return;
}
int main()
{
int N;
scanf("%d", &N);
Print_Factorial(N);
return 0;
}
源于10进制乘法的原理,可举例验证。
void Print_Factorial ( const int N )
{
int mup=1;
if(N<0){printf("Invalid input");return;}
if(N==0){printf("%d",mup);return;}
if(N<=12)
{
for(int i=1;i<=N;i++)
mup=mup*i;
printf("%d",mup);
}
else
{
if(N<=1000&&N>12)
{
int site[10000]={0};
int n=0;
int k=1;
int temp=0;
site[0]=1;
for(int i=2;i<=N;i++)
{
for(int j=0;j<k;j++)
{
temp=site[j]*i+n;
site[j]=temp%10;
n=temp/10;
}
while(n!=0)
{
site[k]=n%10;
k++;
n=n/10;
}
}
for(int l=k-1;l>=0;l--)
printf("%d",site[l]);
return;
}
}
return;
}
int main()
{
int N;
scanf("%d", &N);
Print_Factorial(N);
return 0;
}
源于10进制乘法的原理,可举例验证。
相关文章推荐
- PAT基础编程题 4-10 阶乘计算升级版
- [PTA] 4-10 阶乘计算升级版
- (函数题)4-10 阶乘计算升级版
- 4-10 阶乘计算升级版
- 4-10 阶乘计算升级版
- 6-10 阶乘计算升级版
- 4-10 阶乘计算升级版 (20分)
- 4-10 阶乘计算升级版 (20分)
- 4-10 阶乘计算升级版 (20分)(大数乘法)
- 4-10 阶乘计算升级版 (20分)
- pta 6-10 阶乘计算升级版
- 4-10 阶乘计算升级版
- PTA 4-10 阶乘计算升级版 (20分)
- 4-10 阶乘计算升级版
- PAT基础题 4-10 阶乘计算升级版
- 计算1到10的阶乘
- 阶乘计算升级版
- n的阶乘;计算1!+2!+3!+4!+...+10!;编写代码,演示多个字符从两边移动,向中间汇聚;求ax^2+bx+c=0的解;写一个程序返回参数二进制中1的个数;6.求两个数的最大公约数。
- 阶乘计算升级版
- 阶乘计算升级版