当前位置: 首页 > news >正文

洛谷 P1009 阶乘之和 Label:高精度

题目描述

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

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

输入输出格式

输入格式:

 

一个正整数N。

 

输出格式:

 

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

 

输入输出样例

输入样例#1:

3

输出样例#1:

9

代码

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int n,sum[256],a[256];
 7 
 8 void plus_(){
 9     int i=0,k=max(sum[0],a[0]);
10 //    cout<<k<<endl;
11     for(int i=1;i<=k;i++){
12         sum[i+1]+=(sum[i]+a[i])/10;
13         sum[i]=(sum[i]+a[i])%10;
14     }
15     if(sum[k+1]>0) sum[0]=k+1;
16     else sum[0]=k;
17 }
18 
19 void multiply(int key){
20     int i=0,k=a[0];//此处没有考虑k<=0的情况
21     for(i=1;i<=k;i++) a[i]*=key;
22     
23     
24     for(i=1;i<=k;i++){
25         a[i+1]+=a[i]/10;
26         a[i]%=10;
27     }
28     while(a[i]>0){
29         a[i+1]=a[i]/10;
30         a[i]%=10;
31 //        cout<<a[i]<<" ";
32         i++;
33         a[0]++;
34     }
35 }
36 
37 int main(){
38 //    freopen("01.txt","r",stdin);
39     scanf("%d",&n);
40     a[0]=a[1]=1;sum[0]=1;
41     for(int i=1;i<=n;i++){
42         multiply(i);
43         plus_();
44     }
45 /*    for(int i=a[0];i>=1;i--)
46 **        printf("%d",a[i]);
47 **    puts("");
48 */
49     for(int i=sum[0];i>=1;i--)
50         printf("%d",sum[i]);
51     puts("");
52     return 0;
53 }

高精度,因为是阶乘,所以a[1]=1,a[0]=1

 

转载于:https://www.cnblogs.com/radiumlrb/p/5804331.html

相关文章:

  • Java版CRC8和CRC16工具类
  • NPOI操作excel
  • Spark核心概念
  • Spring MVC+Kaptcha实现验证码功能
  • iOS NSDecimalNumber 使用
  • linux中断处理原理分析
  • 图论1——基础
  • 移动端 Web 开发前端知识整理
  • Javascript 正则校验身份证
  • 理解原型其实是理解原型链
  • Java 中的 GC -- GC基础常识
  • 五分钟搞定 HTTPS 配置,二哥手把手教
  • 5 Maven生命周期和插件
  • 坦克大战--Java类型 ---- (2)按键设置和用户名的输入
  • Ubuntu SSH root 登录 Permission denied 错误
  • JS 中的深拷贝与浅拷贝
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Docker容器管理
  • express如何解决request entity too large问题
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript设计模式系列一:工厂模式
  • Java程序员幽默爆笑锦集
  • Java教程_软件开发基础
  • learning koa2.x
  • quasar-framework cnodejs社区
  • SAP云平台里Global Account和Sub Account的关系
  • spring security oauth2 password授权模式
  • 复杂数据处理
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 日剧·日综资源集合(建议收藏)
  • 手写双向链表LinkedList的几个常用功能
  • 异步
  • linux 淘宝开源监控工具tsar
  • UI设计初学者应该如何入门?
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 如何正确理解,内页权重高于首页?
  • ​linux启动进程的方式
  • ​如何防止网络攻击?
  • ###C语言程序设计-----C语言学习(3)#
  • #QT(TCP网络编程-服务端)
  • (1)(1.13) SiK无线电高级配置(五)
  • (2)nginx 安装、启停
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm高校实验室 毕业设计 800008
  • (一)VirtualBox安装增强功能
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)程序员技术练级攻略
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net解析传过来的xml_DOM4J解析XML文件
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .考试倒计时43天!来提分啦!
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解