阶乘统计2
来源:互联网 发布:知茵女装网上专卖店 编辑:程序博客网 时间:2024/05/17 06:43
描述 Description
n的阶乘定义为n!=1*2*3*……*n 如3!=6n!通常最后会有很多0,如5!=120 最后有一个0,现在统计n!去除末尾的0后,最后k位是多少
输入格式 InputFormat
第一行包括两个数n,k输出格式 OutputFormat
如果n!不止k位,则输出最后k位,如果不足k位,则高位补零,补足k位后输出注意!这里与阶乘统计1有区别!
样例输入 SampleInput
7 2
样例输出 SampleOutput
04
数据范围和注释 Hint
7!为5040,去除末尾的0为504,最后两位为04100%满足1<=n<=1400000 1<=k<=10
来源 Source
Vivian Snow对P1018的改造思路:
用一个int64的数做阶乘,就是简单粗暴的用for循环阶乘。但是在过程中随时去末尾0,同时如果乘积大于1000000000000,就取对1000000000000的余数,再继续阶乘,最后注意一下输出前导0。
#include <stdio.h>#include <string.h>int main(){ unsigned long long i, sum, n, k, len;char str[100];sum = 1;scanf("%lld%lld", &n, &k);for(i = 1; i <= n; i++) //求阶乘{sum *= i;while(sum % 10 == 0) //注意每次先乘再除零{sum /= 10;}sum %= 10000000000;}sprintf(str, "%lld", sum); //打印及补零len = strlen(str)-1;while(len >= 0 && str[len] == '0'){len--;}for(i = len-k+1; i <= len; i++){if(i < 0){printf("0");}else{printf("%c", str[i]);}}printf("\n");return 0;}
0 0
- 阶乘统计2
- tyvj 1018 阶乘统计 和 1037 阶乘统计2
- 阶乘统计0个数 算法
- 阶乘2
- 阶乘2
- 统计阶乘中质因子的个数
- 统计一个数阶乘0的个数
- 计算大数阶乘 并统计'0'的个数
- 统计一个数的阶乘后面0的个数
- 统计阶乘结果的末尾0的个数
- 统计数n阶乘中0的位数
- [USACO3.2]阶乘 Factorials
- 阶乘
- 阶乘
- 阶乘
- 阶乘
- 阶乘
- 阶乘
- ANTLR语法树与树的遍历
- 浮动式标签练习
- MooFest - POJ 1990 树状数组
- java 线程 异常处理(读书)
- Objective-C 和 Core Foundation 对象相互转换的内存管理总结
- 阶乘统计2
- 邓小平的养生
- &引用取址
- 读取properties配置文件方法
- 一段文字中替换所有汉字的数字为阿拉伯数字
- stock cluster analysis with graphviz how OEM control automotive company
- STL常见用法整理_set
- LeetCode Max Points on a Line
- C++多重虚拟继承