哥,好歹讲一下你的大致思路吧,还有每个数组的意义
by 神犇梦的蒟蒻 @ 2018-12-08 20:15:51
要相信,样例是玄学的(样例过不了也可以AC。。。。)
by 神犇梦的蒟蒻 @ 2018-12-08 20:16:54
要相信,样例是玄学的(样例过不了也可以AC。。。。)
by Q1nghuan @ 2018-12-08 20:21:05
```c
#include<iostream>
using namespace std;
int a[65],b[65],c[65];//a[]为记录总值,b[]为记录每次要相加的阶乘,c[]辅助b[],保证不会超过10;
int main()
{
long long int r=0,n,w=64,i,l=0,q;
cin>>n;//都懂
a[1]=1,b[1]=1;
for(i=2;i<=n;i++)
{
for(q=1;q<=64;q++)
{
b[q]*=i;//计算阶乘
if(b[q]>=10)//保证不超过10位
{
c[q+1]=b[q]/10;//记录超过10的单位,等下加进去
b[q]%=10;//去除10位
}
}
for(q=1;q<=64;q++)//保证不超过10位
{
b[q]+=c[q];//相加
if(b[q]>=10)
{
b[q+1]+=b[q]/10;
b[q]%=10;
}
c[q]=0;//相加后为0;
a[q]+=b[q];//相加
if(a[q]>=10)//保证不超过10位
{
a[q+1]+=a[q]/10;
a[q]%=10;
}
}
}
for(i=1;i<=64;i++)//去掉多余的0
{
if(a[i]!=0)
l=i;//记录末尾位置
}
for(i=1;i<=l;i++)//输出
{
cout<<a[i];
}
return 0;
}
```
by 膨胀的木棍 @ 2018-12-09 14:52:24
感谢各位的参与
我这题0分是因为我是输出反了
现在100分了~_~;
by 膨胀的木棍 @ 2018-12-09 16:58:07
for(i=l;i>0;i--)//输出
_____________________
_____________________
{
cout<<a[i];
}
by 膨胀的木棍 @ 2018-12-09 17:00:29