您的位置:首页 > 其它

HDOJ--1066--Last non-zero Digit in N!

2010-06-02 00:05 155 查看
#include<stdio.h>
#include<string.h>
char num[10000];
int main()
{
while(scanf("%s",num)==1)
{
int len,i,j,ret,temp,c;
len=strlen(num);
for(i=0,j=len-1;i<=j;i++,j--)
{
temp=num[i]-'0';
num[i]=num[j]-'0';
num[j]=temp;
}
if(len==1)
ret=1;
else
ret=6;

while(len)
{
c=0;
for(i=0;i<=num[0];i++)
if(i%5!=0)
ret*=i;
ret%=10;
for(i=len-1;i>=0;i--)///////利用字符串进行1位数除法,有点技巧
{
c=c*10+num[i];
num[i]=c/5;
c=c%5;
}///////////////////////////////////
temp=(num[1]*10+num[0])%4;
if(temp==0)
temp=4;///////////利用最后两位判断,每4次一个循环
for(i=1;i<=temp;i++)////特殊除法
{
switch(ret)
{
case 2:
ret=6;break;
case 4:
ret=2;break;
case 6:
ret=8;break;
case 8:
ret=4;break;
}
}
if(num[len-1]==0)
len--;
}
printf("%d/n",ret);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: