問題はこちら
No.593 4進FizzBuzz - yukicoder
頭の桁から順に見て、4倍しながら足していくことで求める事ができる
char s[1000010]; main(){ gets(s); int n=strlen(s); int m3=0,m5=0; for(int i=0;i<n;i++){ m3=(m3*4+s[i]-'0')%3; m5=(m5*4+s[i]-'0')%5; } if(m3==0){ if(m5==0)puts("FizzBuzz"); else puts("Fizz"); }else{ if(m5==0)puts("Buzz"); else puts(s); } }
FizzBuzzゴルフは難しすぎてよくわからないので適当に
i,n; char s[1<<21]; main(){ for(gets(s);s[i];n=(n*4+s[i++]-3)%15); puts(n%5?n%3?s:"Fizz":"FizzBuzz"+n*n%3*4); }
106B