用高精度计算出 S=1!+2!+3!+⋯+n!(n≤50)。
其中 !
表示阶乘,定义为 n!=n×(n−1)×(n−2)×⋯×1。例如,5!=5×4×3×2×1=120。
一个正整数 n。
一个正整数 S,表示计算结果。
输入
3
输出
9
蒟蒻在厕所蹲了半小时后也是写出了代码,但不对,先康康:
#include
using namespace std;
int a[2000],c[2000];
void op(int a,int m)
{
int z=0;
for(int i=1;i<=1000;i++)
{
a[i]=a[i]*m+z;
z=a[i]/10;
a[i]%=10;
}
}
void xp(int* a,int* c)
{
int z=0;
for(int i=1;i<=1000;i++)
{
c[i]=a[i]+c[i]+z;
z=c[i]/10;
c[i]=c[i]%10;
}
}
int main()
{
int N;
cin>>N;
a[1] = 1;
for(int i=1;i<=N;i++)
{
op(a,i);
xp(a,c);
}
bool flag=0;
for(int i=1000;i>0;i--)
{
if(c[i]!=0)
{
flag=1;
}
if(flag==1)
{
cout<
然后,dalao们猜猜咋了?
#include
using namespace std;
int a[2000],c[2000];
void op(int* a,int m)
{
int z=0;
for(int i=1;i<=1000;i++)
{
a[i]=a[i]*m+z;
z=a[i]/10;
a[i]%=10;
}
}
void xp(int* a,int* c)
{
int z=0;
for(int i=1;i<=1000;i++)
{
c[i]=a[i]+c[i]+z;
z=c[i]/10;
c[i]=c[i]%10;
}
}
int main()
{
int N;
cin>>N;
a[1] = 1;
for(int i=1;i<=N;i++)
{
op(a,i);
xp(a,c);
}
bool flag=0;
for(int i=1000;i>0;i--)
{
if(c[i]!=0)
{
flag=1;
}
if(flag==1)
{
cout<
这是对的······没有*就不是数组·····然后就完了。AC