ACM复习(16)8617 阶乘数字和
来源:互联网 发布:如何升级linux 编译器 编辑:程序博客网 时间:2024/05/16 18:41
Description 我们知道一个数的阶乘n! = 1*2*……*n一般是一个很大的数。现在要计算的是一个数阶乘之后得出来的数所有位上的数字相加的和。
输入格式 输入为多case输入。每个case只有一行,输入一个正整数n(1<=n <= 50),当输入0时结束
输出格式 一个整数。
输入样例
5
2
0
输出样例
3
2
解题思路
要计算一个数阶乘之后的各位数字和肯定要将阶乘算出来,但不能直接算,会溢出。
所以应该像计算大数字和那样用数组模拟,但直接模拟又太繁琐,这时需要用到下
的技巧:
从个位开始,每一位直接乘以乘数再加上进位数(初始进位数为0),结果模10作为
保留数,结果除以10作为进位数
示例:
#include<stdio.h>int calculate(int n);int main(){ int n; while(scanf("%d", &n) && n != 0) printf("%d\n", calculate(n)); return 0;}int calculate(int n){ int total = 0, t, e, record[100] = {1}; for(int i = n; i >= 1; i --) { e = 0; for(int j = 0; j < 100; j ++) { t = record[j]; record[j] = (e + i * record[j]) % 10; e = (e + t * i) / 10; } } for(int i = 0; i < 100; i ++) total += record[i]; return total;}
阅读全文
0 0
- ACM复习(16)8617 阶乘数字和
- acm-因子和阶乘
- 阶乘数字和
- C++复习七(阶乘)
- ACM-阶乘因式分解(一)
- 数字电子技术复习(三)——触发器和时序电路
- ACM:蓝桥杯:阶乘因式分解(一)
- 阶乘因式分解(一) -- ACM解决方案
- ACM基础题:阶乘因式分解(一)
- 复习之路 阶乘
- C++ 16(阶乘和)
- python基础复习之数字和字符串
- ACM天梯赛练习L1-013. 计算阶乘和
- ACM复习(1)1077 韩信点兵
- ACM复习(2)1078 破密
- ACM复习(6)1144 数星星
- ACM复习(7)1079 三角形
- ACM复习(11)8615 快乐
- Python(3) python小知识--reduce(), range(), lambda
- virtual dj studio中文版 | Virtual DJ Studio(专业级DJ混音软件)官方注册版V7.8.5下载 | virtual dj studio 7混音器
- adb命令
- 如何在js中操作样式
- Python(6) 实现一个简单的随机验证码生成器
- ACM复习(16)8617 阶乘数字和
- Linux C/C++ 程序员毕业工作两年多来的感想
- linux内核的I2C子系统详解2——关键结构体、关键文件
- 常用的Android基本布局——01
- 机器学习笔记(一)
- 2017.12.17Day16
- MongoDBTemplate类的使用
- 【有关数的范围】[HDU1001]
- Java CMS GC算法 转自:http://www.iteye.com/topic/473874