您的位置:首页 > 其它

计蒜客 难题题库 217 阶乘

2015-08-10 10:14 246 查看
70次
14.2%
1000ms
65536K

n的阶乘定义为n!=1*2*3*……*n 如3!=6 n!通常最后会有很多0,如5!=120 最后有一个0,现在统计n!去除末尾的0后,最后k位是多少

输入格式:
第一行包括两个数n,k
输出格式:
如果n!不止k位,则输出最后k位,如果不足k位,则将剩下的全部输出
7!为5040,去除末尾的0为504,最后两位为04 100%满足1< =n< =20 1< =k< =9

样例1

输入:
7 2


输出:
04


#include<iostream>
using namespace std;

int main(){
long long mod, res, n, k;
cin >> n >> k;
mod = 1;
while(k--){
mod *= 10;
}
const long long cut = 1000000000000000LL;
res = 1;
for(int i = 1; i <= n; ++i){
res *= i;
while(res % 10 == 0){
res /= 10;
}
res %= cut;
}
if(res < mod){              // 如果n!不止k位,则输出最后k位,如果不足k位,则将剩下的全部输出
cout << res << endl;
return 0;
}
res %= mod;
mod /= 10;
while(mod){
cout << res/mod;
res %= mod;
mod /= 10;
}
cout << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: