阶乘最后k位
题目描述
n的阶乘定义为n!=1*2*3*……*n 如3!=6 n!通常最后会有很多0,如5!=120 最后有一个0,现在统计n!去除末尾的0后,最后k位是多少
输入
第一行包括两个数n,k
输出
如果n!不止k位,则输出最后k位,如果不足k位,则高位补零,补足k位后输出 注意!这里与阶乘统计1有区别!
样例输入
7 2
样例输出
04
#include<iostream> using namespace std; int main() { long long bef; int n,k; cin>>n>>k; long long mod=1; for(int i=1;i<=k;i++) { mod=mod*10; } long long ans=1; for(int i=2;i<=n;i++) { ans=ans*i; while(1) { if(ans%10==0) { ans/=10; } else break; } ans%=mod*10; } ans%=mod; int w=0; long long b=ans; while(b) { b/=10; w++; } for(int i=0;i<k-w;i++) { cout<<0; } cout<<ans<<endl; return 0; }