因为这大周要期中考试,所以信息课很少。其实并没有什么老师占课,只是这大周本来就短,然后少了好几节信息课。更那啥的是,考试那两天刚好都有信息课,刚好就占掉了。太惨了
一:求阶乘
题目描述:就是输入一个数N,求它的阶乘。N<=500。
看完以后我还没有看懂这个结果会有多大。于是我很诚实的按了一下计算器。
然后……
虽然到现在。我还不知道e是什么数,但是我知道应该是一个很大很大的数。
总之结果就是很大。因为10!就已经有3,628,800。所以这道题显然是要用高精度算的。
实际上并不需要这么长的一段废话。因为这题的标签上就是三个字 “高精度”。
#include<bits/stdc++.h>
using namespace std;
int a[25000]={},b[25000]={};
int main()
{
int n,m;
cin>>n;
a[1]=1;
for (int i=2;i<=n;i++)
{
for (int j=1;j<=2000;j++)//单精乘高精
{
b[j]+=a[j]*i;
b[j+1]=b[j]/10;
b[j]%=10;
}
for (int k=1;k<=2000;k++)//将b的数值存到a中
{
a[k]=b[k];
b[k]=0;
}
}
m=2000;
while (a[m]==0) m--;//处理开头的零
for (int i=m;i>=1;i--) cout<<a[i];//输出结果
cout<<endl;
return 0;
}