Description
n的阶乘定义为n!=1*2*3*……*n 如3!=6 n!通常最后会有很多0,如5!=120 最后有一个0,现在统计n!去除末尾的0后,最后k位是多少
Input
第一行包括两个数n,k
Output
如果n!不止k位,则输出最后k位,如果不足k位,则将剩下的全部输出。
Samples
input Copy
7 2
output Copy
04
Hint
7!为5040,去除末尾的0为504,最后两位为04 100%满足1< =n< =20 1< =k< =9。
#include <bits/stdc++.h>
using namespace std;
int main(){
long long n,sum,k;
cin>>n>>k;
sum=1;
for(int i=0;i<n;i++){
sum*=i+1;//在进行阶乘的同时把末尾的0去掉
if(sum%10==0){
sum/=10;
}
}
int length=0;
long long temp=sum;
while(1){
if(temp==0)break;
else {
temp/=10;
length++;//计算sum长度
}
}
if(k>=length){
cout<<sum<<'\n';
}
else{
char arr[k+1];
for(int i=k-1;i>=0;i--){
int temp2=sum%10;
sum/=10;
arr[i]=temp2+'0';
}
arr[k]='\0';//在结尾加上\0,表明此为字符串
cout<<arr<<'\n';
}
return 0;
}
深渊橙v3模型 提示词:blue sky,moon,mountain,sunlight,glasses,forest,1girl,deep web underground,looking away