⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 阶乘.cpp

📁 /* author: qiaoger email: qiaoger@tom.com date: 2008-1-7 question: 求 n! (n<=5000) */
💻 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 + -