华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1274|回复: 1
打印 上一主题 下一主题

P1009 阶乘之和

[复制链接]

738

主题

1485

帖子

5422

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5422
跳转到指定楼层
楼主
发表于 2018-8-10 16:03:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
https://www.luogu.org/problemnew/show/P1009

题目描述
用高精度计算出 S=1!+2!+3!+…+n! (n≤50)S=1!+2!+3!+…+n!(n≤50)

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

输入输出格式
输入格式:
一个正整数 N 。

输出格式:
一个正整数 S ,表示计算结果。

输入输出样例
输入样例#1:
3
输出样例#1:
9
回复

使用道具 举报

738

主题

1485

帖子

5422

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5422
沙发
 楼主| 发表于 2020-2-2 16:47:09 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. const int  mm=100;
  4. int s[mm],a[mm],i,p,x,n;
  5. int main()
  6. {
  7.         cin>>n;
  8.         for(p=1; p<=mm-1; p++) a[p]=s[p]=0;
  9.         a[0]=s[0]=1;
  10.         for (i=2; i<=n; i++)
  11.         {
  12.                 ///cheng
  13.                 for (p=0; p<=mm-1; p++) a[p]*=i;
  14.                 for (p=0; p<=mm-2; p++)
  15.                 {
  16.                         x=a[p];
  17.                         a[p]=x%10;
  18.                         a[p+1]+=x/10;
  19.                 }
  20.                 ///jia
  21.                 for (p=0; p<=mm-1; p++) s[p]+=a[p];
  22.                 for (p=0; p<=mm-2; p++)
  23.                 {
  24.                         x=s[p];
  25.                         s[p]=x%10;
  26.                         s[p+1]+=x/10;
  27.                 }
  28.         }
  29.         ///shuchu
  30.         p=mm-1;
  31.         while (s[p]==0 && p>0) p--;
  32.         for  (; p>=0; p--) cout<<s[p];return 0;
  33. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-12-25 14:47 , Processed in 0.566488 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表