1000的阶乘
1000的阶乘
算出1000的阶乘用到高精度乘法的方法,即先定义一个整形数组,这里我定义它的大小为2570,因为1000的阶乘差位数差不多就是这么大,然后从1开始乘以这2570个元素,若为0则跳过,接着作过位判断,循环1000次即可得到结果。我曾试过用vector容器,每一次进位的都把要进位的数加进容器好像比无谓地跳过0花费的时间更多,它计算1000的阶乘大概要8秒,而这个数组计算则不用1秒的时间。
#include <iOStream>
//#include <time.h>
using namespace std;
int result[2566] = {0};
void numUp()
{
int y;
int i = 0;
while(i < 2566)
{
if(result[i] > 9)
{
y = result[i] / 10;
result[i] %= 10;
result[++i] += y;
}
else
{
i++;
}
}
}
void fun(int n)
{
int i = 1, j = 0;
result[0] = 1;
for(i = 1; i < n + 1; i++)
{
j = 0;
while(j < 2566)
{
if(result[j] == 0)
{
j++;
continue;
}
else
{
result[j] *= i;
}
j++;
}
numUp();
}
}
int main()
{
/*freopen("in.txt","r",stdin);
freopen("out.txt", "w", stdout);*/
int n;
cin >> n;
fun(n);
int i = 2570;
while(result[i] == 0)
{
i--;
}
for(; i > -1; i--)
{
cout << result[i];
}
system("pause");
return 0;
}
相关阅读
去年春节时期,微信推出红包功能,并籍此一度成为热点话题,今年春节临近,各大公司都开始纷纷效仿。支付宝推出了总价为6亿元的抢红包活
APP推广经验:如何做到0推广费获取10万用户,日增1000用户
初做APP,经常从seo实验室吸取运营经验,小有成绩,将我的运营经验拿出来跟大家分享一下!我们的APP在零推广费用的基础上短短几个月获得
A5创业网(公众号:iadmin5)1月11日报道,优酷对外宣布将起诉网络自媒体“BiaNews(鞭牛士)”传播不实信息,侵犯优酷商誉,索赔1000
long sum = 0, num = 1; for (int i = 1; i < 20; i++) { num = i * num; sum += num; Console.WriteLine(num); } Console
小编导读 : 2015年,金错刀频道会启动一个创业公益项目——《创业狠问答》。第一季就是“不花钱”系列。我被很多创业者问的最多的