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

📄 3000.cpp

📁 可以计算大数的阶乘
💻 CPP
字号:
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
//#include<windows.h>
//#include<time.h>

/*
double currTime(LARGE_INTEGER *freq) //使用高精度计时器
{
	LARGE_INTEGER performanceCount;
	BOOL result=QueryPerformanceCounter(  &performanceCount );
	double time= performanceCount.HighPart * 4294967296.0 + performanceCount.LowPart;
	time=time / (   freq->HighPart * 4294967296.0 + freq->LowPart);
	return time;
}

*/

int main()
{
/*	double start,end;
	LARGE_INTEGER freq;
	if ( !QueryPerformanceFrequency( &freq) )
	{
		cout<<"不能使用高精度计时器";
		return 0;
	}
   start=currTime(&freq);

 // long start,end;
//	start=clock();
*/	
	//定义初始变量
	int c=0,
		i=0,
		j=0,
		k=0,
		m=0,
	    jinwei=0;
	
	//定义数组的容量
	unsigned	int	jiec[3500]={1};
	int		ff[1600];

	//3000的阶乘
	//for(i=1;i<=1500;i++)
	//	ff[i]=i*(3001-i);
	for(i=1;i<=1500;i++)
	{
		m=i*(3001-i);
		//判断数组的开始是否为零
		while(jiec[k]==0){k++;}

		//作一次阶乘
		for(j=k;j<c+3;j++)
		{
			jiec[j]=jiec[j]*m+jinwei;

			//计算从数组中的进位
			jinwei=jiec[j]/1000;
			
			//取模
			jiec[j]=jiec[j]-jinwei*1000;		
		}

		//计算数组的位数
		while(jiec[j--]==0);
		c=j+2;
	}

	
	//文件的输出
	ofstream fileout;
	fileout.open("3000.txt");
	if(!fileout)
	{
		cout<<"不能打开文件;"<<"3000!.txt"<<'\n';
		exit(1);
	}

	//输出开头
	fileout<<"3000!=";

	//输出最高的位
	fileout<<jiec[c-1];

	//依次输出结果,不够零的不足
	for(i=c-2;i>=0;i--)
	{
		if(jiec[i]==0)
		{
			fileout<<"000";
		}
		 if(jiec[i]>0&&jiec[i]<10)
		{
			fileout<<"00"<<jiec[i];
		}
		 if(jiec[i]>=10&&jiec[i]<100)
		{
			fileout<<"0"<<jiec[i];
		}
		 if(jiec[i]>=100)
			fileout<<jiec[i];
	}


	fileout.close();
//	end=clock();
//	end=currTime(&freq);
//	cout<<endl<<(end-start)<<endl;
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -