码迷,mamicode.com
首页 > 其他好文 > 详细

刷过一题之阶乘的K位数

时间:2015-12-12 12:26:56      阅读:568      评论:0      收藏:0      [点我收藏+]

标签:

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

 

水题,不解释

 1 #include<iostream>
 2 #define ll long long
 3 using namespace std;
 4 ll n,k,ans=1,mod=1,len;
 5 int intlen(ll x)
 6 {
 7      while(x) {x/=10;len++;}
 8 }
 9 int main()
10 {
11     cin>>n>>k;
12     for(int i=1;i<=k;i++) mod*=10;
13     if(k==1) mod=10;
14     for(int i=2;i<=n;i++)
15     {
16         ans*=i;
17         while(ans%10==0) ans/=10;
18         ans%=mod*10;
19     }
20     ans%=mod;
21     intlen(ans);
22     for(int i=1;i<=k-len;i++) cout<<0;
23     cout<<ans;
24     //system("pause>nul");
25     return 0;
26 }

 

刷过一题之阶乘的K位数

标签:

原文地址:http://www.cnblogs.com/nightfury/p/5040949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!