AOJ 2281 Swap Cipher
問題
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2281 日本語
解法
aとbを逆から読んで復号する。
コード
int main(){ int N; while(scanf("%d", &N) && N){ char mes[128]; scanf("%s", mes); int a[128], b[128]; for(int i = N - 1; i >= 0; i--) scanf("%d%d", &a[i], &b[i]); rep(i, N){ int c = a[i]-1, d = b[i]-1; char t = mes[c]; mes[c] = mes[d]; mes[d] = t; int dis = d - c; dis %= 26; if(mes[c] + dis > 'z') mes[c] -= 26; mes[c] += dis; if(mes[d] + dis > 'z') mes[d] -= 26; mes[d] += dis; } puts(mes); } return 0; }
何問かやったけど、ブログにのせてない問題がある。どうしよ