Uva 568 - Just the Facts

    技术2022-05-20  84

    自己写的一直过不了,不是WA就是TLE.找了一下,原来这个问题是有模版的啊。真的很强悍!#include<stdio.h> #include<string.h> int lastdigit(char*buf) { const int mod[20]={1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2}; int len=strlen(buf),a[110],i,c,ret=1; if(len==1) return mod[buf[0]-'0']; for(i=0;i<len;i++) a[i]=buf[len-1-i]-'0'; for(;len;len-=!a[len-1]) { ret=ret*mod[a[1]%2*10+a[0]]%5; for(c=0,i=len-1;i>=0;i--) c=c*10+a[i],a[i]=c/5,c%=5; } return ret+ret%2*5; } int main(void) { char s[1000]; while(scanf("%s",s) == 1) printf("%5s -> %d/n",s,lastdigit(s)); return 0; }  

    ps:lastdigit这个模版是直接copy的……


    最新回复(0)