📄 阶乘.cpp
字号:
/*
author: qiaoger
email: qiaoger@tom.com
date: 2005-1-7
question:
求 n! (n<=5000)
*/
#include<iostream.h>
const int MAX=5000;//
unsigned int CountOfDigit=0;//data 的个数
void mutiplay(int data[],int n)//求积
{
int i;
for(i=0;i<=CountOfDigit;i++)
data[i]=data[i]*n;
}
void adjust(int data[])//调整:每个data 的存储范围:0~9999,即只表示4位
{
int i;
for(i=0;i<=CountOfDigit;i++)
{
data[i+1]=data[i+1]+data[i]/10000;
data[i]=data[i]%10000;
}
if(data[i]>0)
CountOfDigit++;
}
void print(int data[])//打印该数
{
int i;
i=CountOfDigit;
cout<<data[i];
i--;
for( ;i>=0;i--)
{
if(data==0)
cout<<"0000";
if(data[i]<10)//不足4位,添0
cout<<"000"<<data[i];
else
if(data[i]<100)
cout<<"00"<<data[i];
else
if(data[i]<1000)
cout<<"0"<<data[i];
else
cout<<data[i];
}
}
int main()
{
int data[MAX];
int i,n;
for(i=0;i<MAX;i++)
data[i]=0;
//求n!
cin>>n;
data[0]=1;
for(i=2;i<=n;i++)
{
mutiplay(data,i);
adjust(data);
}
print(data);
cout<<"\ninput 0 to exit …";//方便中断看结果
cin>>i;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -