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