刷过一题之阶乘的K位数
2015-12-12 11:08
260 查看
n的阶乘定义为n!=1*2*3*……*n,如3!=6 ,特殊的0!=1. n!通常最后会有很多0,如5!=120,最后有一个0,现在统计n!去除末尾的0后(注意是尾部所有的0,也意味着从右往左看第一个非零数字右边所有的零都去掉),最后的k位是多少。
输入:
仅一行包括两个数n,k,两数之间用一个空格分隔。
输出:
如果n!去掉尾部的0后不止k位,则输出最后k位,如果不足k位,则高位补零,补足k位后输出。
输入示例:
7 2
输出示例:
04
样例说明:7!为5040,去除末尾的0后变为504,最后两位为04,故输出为04。
数据范围:100%满足1<=n<=1400000,1<=k<=10
水题,不解释
输入:
仅一行包括两个数n,k,两数之间用一个空格分隔。
输出:
如果n!去掉尾部的0后不止k位,则输出最后k位,如果不足k位,则高位补零,补足k位后输出。
输入示例:
7 2
输出示例:
04
样例说明:7!为5040,去除末尾的0后变为504,最后两位为04,故输出为04。
数据范围:100%满足1<=n<=1400000,1<=k<=10
水题,不解释
#include<iostream> #define ll long long using namespace std; ll n,k,ans=1,mod=1,len; int intlen(ll x) { while(x) {x/=10;len++;} } int main() { cin>>n>>k; for(int i=1;i<=k;i++) mod*=10; if(k==1) mod=10; for(int i=2;i<=n;i++) { ans*=i; while(ans%10==0) ans/=10; ans%=mod*10; } ans%=mod; intlen(ans); for(int i=1;i<=k-len;i++) cout<<'0'; cout<<ans; //system("pause>nul"); return 0; }
相关文章推荐
- golang的http包笔记
- c语言学习笔记之函数指针和指针函数
- 汪涵的朋友圈到底有多牛 ?
- python 执行文件时传参
- 看代码中遇到的问题
- 被误解的MVC和被神化的MVVM
- LeetCode 263 Ugly Number
- 扫雷
- K-Means 算法(Java)
- iOS开发-苹果自带地图简单使用
- SAP在建工程转固
- cpuspeed和irqbalance服务器的两大性能杀手
- 进程(process)和线程(thread)
- PO、VO、BO、DTO
- Android自定义属性以及组合View
- c语言学习笔记之const关键字(理解)
- linear regression(二)
- http://wubx.net/linux-performance-tuning-tips-mysql/
- nodejs初探(二)第一个nodejs程序“hello world”
- Linux下POSIX正则表达式API使用