题目链接 :TOJ10007
10007 - The last non-zero digit of n!
Time Limit: 5000MS
Memory Limit: 65535KB
Memory Limit: 65535KB
Description
Given an integer n, please output the last non-zero digit ofn!
For example, 5!=120, the last non-zero digit is 2, for 9!=362880 it is 8.
Input
One positive integer n. (0<n<1010001)
Output
The last non-zero digit of n!
Sample Input
1
Sample Output
1
经典题目
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<string>
#include<vector>
#include<map>
using namespace std;
int mod[20]={1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2};
char num[10005];
int a[10005];
int main()
{
int len,t,c,i;
while(scanf("%s",num)==1)
{
t=1;
len=strlen(num);
for(i=0;i<len;i++)
a[i]=num[len-i-1]-'0';
while(len)
{
len-=!a[len-1];
t=t*mod[a[1]%2*10+a[0]]%10;
for(c=0,i=len-1;i>-1;i--)
{
c=c*10+a[i];
a[i]=c/5;
c%=5;
}
}
printf("%d\n",t);
}
return 0;
}