メモ

yukicoderでゆるふわgolf

yukicoder No.593 4進FizzBuzz

問題はこちら
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