问题标题: 酷町堂:1308 数字之和

0
0
已解决
芮奥运
芮奥运
高级光能
高级光能

1308数字之和

1308   数字之和

题目描述 Description

题目描述

请计算出指定数字的和:S=1!+2!+3!+…+n!(n≤50)

其中“!”表示阶乘,例如:4!=4 * 3 * 2 * 1。

输入描述 Input Description

一个正整数N。

输出描述 Output Description

一个正整数S,表示计算结果。

样例输入 Sample Input

 

3

样例输出 Sample Output

 

9

数据范围及提示 Data Size & Hint

高精度


1
已采纳
周建勋
周建勋
中级光能
中级光能

int len=0,n,ans=0,len1=0;
long long a[1001]={0},b[1001]={0};
void jiecheng(int x)
{
   int d,r;
   d=0;
   for(int i=1;i<=len;i++)
   {
     r=a[i];
     a[i]=(a[i]*x+d)%10000;
     d=(r*x+d)/10000;
   }
   if(d!=0)
     a[++len]=d;
}
用到很多函数,高精度的题很难,上面只是一部分核心,真的代码很长,望采纳。

1
时梓繁
时梓繁
修练者
修练者

int len=1,t[10001],ans[10001],anslen,n;

void jc(int v)

{

for (int i=1;i<=len;i++) t[i]*=v;

int i=1;

while ((t[i]>9)|(i<len))

{

t[i+1]+=t[i]/10;

t[i]%=10;

i++;

}

len=i;

}

void jia()

{

for (int i=1;i<=len;i++)

{

ans[i]+=t[i];

if (ans[i]>9)

{

ans[i+1]+=ans[i]/10;

ans[i]%=10;

anslen=max(anslen,i+1);

}

anslen=max(anslen,i);

}

}

0
0
宫西诚
宫西诚
修练者
修练者

高精度乘法和高精度加法,我们高精度乘法还没学

我要回答