击鼓传花
击鼓传花
#include
#include
int expmod(int a,int k,int mod)
{
int t=1;
while(k)
{
if(k&1) t=t*a%mod;
a=a*a%mod;
k>>=1;
}
return t;
}
int main()
{
int i,j,k,n;
int prime[201],exp[201];
for(i=1;i<=200;++i)
{
for(j=2;j if(i%j==0) break;
prime[i]=(j==i?1:0);
}
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;++i) exp[i]=0;
for(i=1;i<=n;++i)
if(prime[i]) for(j=i;j<=n;j*=i) exp[i]+=n/j;
exp[2]-=exp[5];exp[5]=0;
for(k=1,i=1;i<=n;++i)
if(prime[i]) k=k*expmod(i,exp[i],10)%10;
printf("%d!:%d\n",n,k);
}
return 0;
}
相关内容