题目描述
对于给定正整数n,将 n! 转换为7进制后,输出这串数字的最后一个非零项。
其中n!=1*2*3...*n。
若n=7, n!=1*2*3...*7=5040(十进制)=20460(七进制) 。对于20460这串数字最后一个非零项为6,
所以输出6。
输入
多组输入数据,每组数据给出一个整数n。( 1<=n<=1000,000,000。)
输出
对于每一个n,输出答案。
样例输入
7
10
样例输出
6
#include<stdio.h>
int aa[]={1,1,2,6,3,1,6};
int mod[]={1,6};
int dfs(int x)
{
int ans=1;
if(x==1||x==0)
return 1;
ans*=mod[(x/7)%2];
ans*=aa[x%7];
ans%=7;
return (ans*dfs(x/7))%7;
}
int main()
{
int n;
while(scanf("%d",&n)!=-1)
{
printf("%d\n",dfs(n)%7);
}
}