题目大意:输入n,求n的阶乘的结果从后往前第一个非0数的值。
解题思路:dfs中计算n的阶乘,每次往上传时,将后面的0去掉后,只保留五位数传上去。
ac代码:
#include <iostream>
using namespace std;
int n, temp;
int prime(int n)
{
int sum;
if (n == 0)
return 1;
else{
temp = n*prime(n-1);
while (!(temp % 10))
temp /= 10;
return temp%100000;
}
}
int main()
{
while (scanf("%d", &n)!=EOF){
temp = prime(n);
while (!(temp % 10))
temp /= 10;
printf("%5d -> %d\n", n, temp%10);
}
return 0;
}