1173:阶乘和

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 9584     通过数: 4868

【题目描述】

用高精度计算出S=1!+2!+3!+…+n!(n≤50)S=1!+2!+3!+…+n!(n≤50),其中“!”表示阶乘,例如:5!=5×4×3×2×15!=5×4×3×2×1。

输入正整数n,输出计算结果S。

【输入】

一个正整数n。

【输出】

计算结果S。

【输入样例】

5

【输出样例】

153

【分析】

定义三个函数,分别是multi函数,用于大数乘法;add函数,用于大数加法;reverse函数,用于字符串逆序输出。

【参考代码】

#include <stdio.h>
#include <string.h>
#define N 210
char f[N],s[N];
void multi(char *str,int k)
{
    int i,len,v=0,x=0;  //x进位 
    len=strlen(str);
    for(i=0;i<len;i++)
    {
        v=(str[i]-'0')*k+x;
        x=v/10; 
        str[i]=v%10+'0';
    }
    while(x>0)
    {
        str[len]=x%10+'0';
        len++;
        x/=10;
    }
}
void add(char *dest,char *src)
{
    int i,lend,lens,lenr,vd,vs,vr,x=0;
    lend=strlen(dest);
    lens=strlen(src);
    
    lenr = lend > lens ? lend : lens;
    
    for(i=0;i<lenr;i++)
    {
        vd = i<lend ? dest[i]-'0' : 0;
        vs = i<lens ? src[i]-'0' : 0;
        
        vr=vd+vs+x;
        x=vr/10;
        dest[i]=vr%10+'0';
    }
    if(x!=0)
        dest[lenr]=x+'0';
}
void reverse(char *str)
{
    int i,len=strlen(str);
    char tmp;
    for(i=0;i<len/2;i++)
    {
        tmp=str[i];
        str[i]=str[len-1-i];
        str[len-1-i]=tmp;
    }
}
int main()
{
    int i,n;
    scanf("%d",&n);
    f[0]='1';
    
    for(i=1; i<=n; i++)
    {
        multi(f,i);
        add(s,f);
    }
    reverse(s);
    puts(s);
    return 0;
}

http://ybt.ssoier.cn:8088/problem_show.php?pid=1173

信息学奥赛一本通(1173:阶乘和)相关推荐

  1. 信息学奥赛一本通 1173:阶乘和 | OpenJudge NOI 1.6 15 | 洛谷 P1009 [NOIP1998 普及组] 阶乘之和

    [题目链接] ybt 1173:阶乘和 注:一本通上这题,应该把n≤50n\le50n≤50当做n≤100n\le100n≤100来看 OpenJudge NOI 1.6 15:阶乘和 洛谷 P100 ...

  2. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  3. 信息学奥赛一本通在线提交地址

    信息学奥赛一本通 1 C++语言入门 1.1 综合 1.1.1 P1458 地球人口承载力估计 正确: 770 提交: 1794 比率: 42.92 % 1.1.2 P1686 Hello, Worl ...

  4. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  5. 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”

    董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...

  6. 信息学奥赛一本通 提高篇 第5章 矩阵乘法

    例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...

  7. 《信息学奥赛一本通提高篇》第6章 组合数学

    例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...

  8. 《信息学奥赛一本通 提高篇》

    提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1章 贪心算法_青少年趣味编程-CSDN博客 提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1 ...

  9. 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分

    信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分 信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分_mrcrack的博客-CSDN博客_信息学奥赛一本通 ...

  10. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

最新文章

  1. springmvc二十一:自定义类型转换器
  2. 【四重优化,速看】剑指 Offer 13. 机器人的运动范围
  3. HBase的RowKey设计
  4. 使用requests访问必应在线翻译
  5. 多变量微积分(4)——多重积分之三重积分
  6. RadASM DosBox设置无法生效问题
  7. android手机 办公软件,寻最佳手机Office助手 八大安卓办公软件横评
  8. mac更新后Git无法使用的问题
  9. “金三银四“,敢不敢“试”?
  10. Stimulsoft 报表工具单元格内换行
  11. 《设计模式的艺术》读书笔记
  12. 关于noilinux的一些操作方法
  13. 【soft6星评论】中台只是一种说法,中小企业主们要擦亮眼睛
  14. 移动硬盘安装ubuntu 20.04 (主机win10)
  15. WIFI基础入门--802.11--TKIP/CCMP/RSN--8
  16. chrome浏览器字体小于12px的解决方式
  17. esp32~mp3播放实例解析
  18. 数据不平衡问题解决方法——欠采样
  19. 雷神的安全平台安全宝典
  20. Vector CAN Log报文收发分析工具VN1640/VN1630替代款工具--CANBOX

热门文章

  1. MySQL视图的应用
  2. 关于Netbeans调试PHP
  3. 有两个集合,两个集合都是10万个数据(已排序),判断B是不是A的子集,算法时间复杂度为Q(N)...
  4. gridview不换行,高亮显示
  5. 如何为 SQL Server 2000 分发和安装 SQL-DMO(引用)
  6. 嫌学校 App 太“烂”,极客父母做了开源版本,却遭官方报警?
  7. 收到字节 Offer,月薪 45k,揭秘面试流程及考点
  8. Spring Boot 项目的这些文件都是干啥用的?
  9. 两天,我把分布式事务搞完了
  10. Nacos,阿里开源,是真的香!!