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

メモ

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

yukicoder No.18 うーさー暗号

問題はこちら
No.18 うーさー暗号 - yukicoder

最初の方針
文字列を全部読み込んで、編集してからまとめて出力する
普通にやると「1文字目」のindexが0になっていて少々鬱陶しいのではじめから1つずらして読み込むことにする

int main(){
	int i;
	char s[1100];
	gets(s+1);
	for(i=1;s[i];i++){
		s[i]-=i%26;
		if(s[i]<65)s[i]+=26;
	}
	puts(s+1);
	return 0;
}

まとめて読み込む必要はないので1文字ずつ処理すればいい

i;main(s){for(;s=getchar()-10;putchar((s-=++i%26)<55?s+36:s+10));}
//sがグローバル変数じゃないのにREにならない。よくわからない

readを使うと、改行の扱いがめんどくさい

最後に処理系依存の未定義動作でもう1B短縮

i;main(s){for(;s=getchar()-10;putchar(s+=(s-=++i%26)<55?36:10));}