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 }
时间: 2024-10-29 19:07:51