您的位置:首页 > 其它

算法竞赛入门经典-阶乘的精确值

2016-08-19 17:40 183 查看
算法思路:模拟加法进位,设置一个进位计数器,取余运算得到个位,整除运算得到进位

内层循环,用于模拟每次的乘法,

外层循环用于遍历阶乘运算中的乘数

#include<iostream>
#include<string.h>
#include<ctype.h>
using namespace std;

#define MAX 1000+10
int number[MAX];
int main()
{
memset(number,0,sizeof(number));//标志所有位为0
int n,temp=0;
int sum=0;
number[0]=1;//首位置为1,用于相乘
scanf("%d",&n);
for(int i=2;i<=n;i++)
{
temp=0;
for(int j=0;j<MAX;j++)//模拟进位操作
{
sum=number[j]*i+temp;
number[j]=sum%10;
temp=sum/10;
}
}
int j;
for(j=MAX-1;number[j]==0;j--);
for(;j>=0;j--)
printf("%d",number[j]);
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: