poj 1604 Just the Facts

时间:2023-01-08 17:16:01
 /**
大意: 求n! 结果 从左到右 第一个非零数
跟 1150 差不多。。
**/
#include <iostream>
#include <cstdio>
using namespace std; int s[][]={
{,,,},{,,,},{,,,},{,,,}
};
int get2(int n){
if(n==)
return ;
return n/+get2(n/);
} int get5(int n){
if(n==)
return ;
return n/+get5(n/);
} int get(int n,int x){
if(n==)
return ;
return n/+(n%>=x)+get(n/,x);
} int getx(int n,int x){
if(n==)
return ;
int res =;
res = getx(n/,x)+get(n,x);
return res;
} int main()
{
int n;
while(cin>>n){
int num2 = get2(n);
int num5 = get5(n);
int num3 = getx(n,);
int num7 = getx(n,);
int num9 = getx(n,);
if(num2<num5){
printf("%5d -> %d\n",n,);
continue;
}else{
int res =;
if(num2!=num5){
num2 = num2-num5;
res = res*s[][num2%];
res = res%;
}
res *= s[][num3%];
res %=;
res *= s[][num7%];
res %=;
res *= s[][num9%];
res = res%;
printf("%5d -> %d\n",n,res);
}
}
return ;
}