大家好,又见面了,我是你们的朋友全栈君。
题目描述
输入一个正整数N,输出N的阶乘。
输入描述:
正整数N(0<=N<=1000)
输出描述:
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
输入例子:
4
5
15
输出例子:
24
120
1307674368000
#include<iostream>
#include<cstring>
using namespace std;
#define Max 3000
int bits[Max];
void factor(int n)
{
int temp,Length=1;
memset(bits,0,sizeof(bits)); //数组初始化清零
bits[1]=1;
for(int i=2;i<=n;i++) //外循环乘以n
{
temp =0;
for(int j=1;j<=Length;j++) //内循环前n-1个数的阶乘
{
bits[j] = bits[j]*i+temp;
temp = bits[j]/10; //temp代表进位,与下条不能够换掉,下条语句先执行会改变bits[j]的值;
bits[j] = bits[j]%10; //代表j位上的值(个位、十位、百位)
}
while(temp != 0)
{
bits[++Length] = temp%10; //更新数组Length大小
temp = temp/10;
}
}
for(int i=Length;i>=1;i--) //倒序输出
{
cout<<bits[i];
}
cout<<endl;
}
int main()
{
int n;
while(cin>>n)
{
factor(n);
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/164007.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...