Time Limit: 10 second

Memory Limit: 2 MB

问题描述

已知正整数n(n≤100),设s=1!+2!+3!+...+n!。其中“!”表示阶层,即n!=1*2*3*...*(n-1)*n,如:3!=1*2*3=6。请编程实现:输入正整数n,输出计算结果s的值。

Input

文件输入仅一行,输入n

Output

s的值。

Sample Input

  1. 4

Sample Output

  1. 33

【题解】

先处理阶乘,这个是高精度乘单精度,然后在一边处理阶乘的时候,一边加起来,即高精度加法。

【代码】

  1. #include <cstdio>
  2.  
  3. int n,a[300],b[300],la = 1 ,lb = 1; //a数组用于存储阶乘,b数组用于存储当前的阶乘和。
  4.  
  5. void input_data()
  6. {
  7. scanf("%d",&n);
  8. for (int i = 1;i <= 299;i++) //初始化所有的数字为0
  9. a[i] = 0,b[i] = 0;
  10. a[1] = 1; //0!== 1
  11. }
  12.  
  13. void get_ans()
  14. {
  15. for (int i = 1;i <= n;i++) //开始获取前n个阶乘的和。
  16. {
  17. int x = 0;
  18. for (int j = 1;j <= la;j++) // 乘上i,同时一边处理进位
  19. {
  20. a[j] = a[j] * i + x;
  21. x = a[j] / 10;
  22. a[j] = a[j] % 10;
  23. }
  24. while (x > 0) //如果这个数的位数还可以变大 就用while让其变大。
  25. {
  26. la++;
  27. a[la] += x;
  28. x = a[la] / 10;
  29. a[la] = a[la] % 10;
  30. }
  31. x = 0;//接下来处理加法
  32. int l;
  33. if (la > lb) //先判断哪一个数比较大,获取他的长度 用于做加法
  34. l = la;
  35. else
  36. l = lb;
  37. for (int j = 1;j <= l;j++) //开始加上去 一边处理进位
  38. {
  39. b[j] = b[j] + a[j] + x;
  40. x = b[j] / 10;
  41. b[j] = b[j] % 10;
  42. }
  43. while (x > 0) //如果可以增加长度则增加长度
  44. {
  45. l++;
  46. b[l] += x;
  47. x = b[l] / 10;
  48. b[l] = b[l] % 10;
  49. }
  50. lb = l; //更新b数组的长度
  51. }
  52. }
  53.  
  54. void output_ans() //最后b数组逆序输出即可。
  55. {
  56. for (int i = lb;i >= 1;i--)
  57. printf("%d",b[i]);
  58. }
  59.  
  60. int main()
  61. {
  62. //freopen("F:\\rush.txt","r",stdin);
  63. input_data();
  64. get_ans();
  65. output_ans();
  66. return 0;
  67. }

【9104】&&【a103】阶乘和的更多相关文章

  1. C语言 · 阶乘计算 · 基础练习

    问题描述 输入一个正整数n,输出n!的值. 其中n!=1*2*3*-*n. 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法.使用一个数组A来表示一个大整数a,A[0]表 ...

  2. Java 计算N阶乘末尾0的个数-LeetCode 172 Factorial Trailing Zeroes

    题目 Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in ...

  3. 关于for循环的几个小练习,例如奇数偶数,阶乘,求和等

    1 .100以内的奇数和偶数 var js = ""; var os = ""; for(var i=1;i<101;i++) { if(i%2 == 0 ...

  4. [LeetCode] Factorial Trailing Zeroes 求阶乘末尾零的个数

    Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in log ...

  5. 求单链表L各结点的阶乘之和(c语言)

    链表需要用到指针 阶乘需要用到递归 链表中的注意事项: 1.链表L是否等于NULL ----------是循环结束的条件 2.链表L->Data ---------取链表L中各个结点的值 3.L ...

  6. 洛谷 P2726 阶乘 Factorials Label:Water

    题目背景 N的阶乘写作N!,表示小于等于N的所有正整数的乘积. 题目描述 阶乘会变大得很快,如13!就必须用32位整数类型来存储,到了70!即使用浮点数也存不下了. 你的任务是找到阶乘最前面的非零位. ...

  7. js实现阶乘

    //while循环实现function calNum(n) { var product = 1; while(n > 1){//1*5*4*3*2,1*n*(n-1)*(n-2)*...*2 p ...

  8. 洛谷P1134 阶乘问题[数论]

    题目描述 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 = 479,001, ...

  9. Random随机类(11选5彩票)BigInteger大数据类(华为面试题1000的阶乘)

    先上Java Web图 为了简化叙述,只写Java代码,然后控制台输出 使用[Random类]取得随机数 import java.util.Random; public class Fir { pub ...

随机推荐

  1. python findall函数

  2. less知识点总结(一)

    1.unit 删除或更换单位. 参数: dimension: 带单位或不带单位的数字. unit: (可选) 目标单位,如果省略此参数,则删除单位. See convert for changing ...

  3. docker search

    命令:docker search [root@iZ943kh74qgZ ~]# docker search --help Usage: docker search [OPTIONS] TERM Sea ...

  4. 【JZOJ4835】【GDOI2017模拟10.31】量化交易

    题目描述 数据范围 解法 贪心: 从左往右枚举,设枚举到元素为x,并维护一个堆: 设此时堆顶元素为y, 如果x大于y,那么x可以与y产生差价,立即将差价贡献给答案. 如果y之前已经和其他元素z产生过差 ...

  5. iOS 内存管理arc

    http://www.tekuba.net/program/346/ ios自动释放池(autoreleasepool #import <Foundation/Foundation.h> ...

  6. CSS Specificity

    CSS的specificity特性或称非凡性,它是一个衡量CSS值优先级的一个标准. 其实就是解决冲突,当同一个元素被CSS选择符选中,按照优先权取舍不同的CSS规则. specificity用一个四 ...

  7. UVa 679 【思维题】

    UVA 679 紫书P148例题. 题目大意:小球从一棵所有叶子深度相同的二叉树的顶点开始向下落,树开始所有节点都为0.若小球落到节点为0的则往左落,否则向右落.并且小球会改变它经过的节点,0变1,1 ...

  8. 网络编程--多线程 , socketserver

    内容补充 python2与python3的区别? """ python3对unicode字符的原生支持 Python2中使用ASCII码作为默认编码方式导致string有 ...

  9. 使用 EnumWindows 找到满足你要求的窗口 - walterlv

    原文:使用 EnumWindows 找到满足你要求的窗口 - walterlv 使用 EnumWindows 找到满足你要求的窗口 2019-04-30 13:11 在 Windows 应用开发中,如 ...

  10. 关于IOS 微信浏览器 点击输入框自动放大问题

    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0& ...