📄 3000.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 + -