読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.163 cAPSlOCK

問題はこちら
No.163 cAPSlOCK - yukicoder


'A'+32で'a'になることを使えば、32を加減することで求める結果を得ることができる

int main(){
	char s[110];
	int i;
	gets(s);
	for(i=0;s[i];i++)s[i]+=s[i]<'a'?32:-32;
	puts(s);
	return 0;
}

前から読み込んでいけばいいので配列はいらない
'A' bitxor 32 で'a'になることを使えば大文字か小文字かの条件分岐がいらない

main(a){
	for(;read(0,&a,1);putchar(a-10?a^32:a));
}

改行以外の文字は64以上の値であることに注意すると

main(a){for(;read(0,&a,1);putchar(a^a/2&32));}

とまとめられる(除算→bitand→bitxorの優先順位)
46B