結果
問題 | No.18 うーさー暗号 |
ユーザー |
![]() |
提出日時 | 2018-08-28 12:33:36 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 1 ms / 5,000 ms |
コード長 | 1,657 bytes |
コンパイル時間 | 178 ms |
コンパイル使用メモリ | 29,184 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-08 00:19:49 |
合計ジャッジ時間 | 673 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 13 |
ソースコード
/* 太郎君は大昔に開発されたシーザー暗号を参考にし、すこし変更することでもうちょっと複雑な暗号方式を作ろうと思いつきました。シーザー暗号とは、平文(暗号化されていない文)のアルファベットを、右に 𝑁回 ずらしたもので、たとえば 𝑁=1 の場合、'𝐴'は'𝐵'になり、'𝑀'は'𝑁'になり、'𝑍'は'𝐴'になります。そこで太郎君は、文字ごとに 𝑁 の値を変更することを考え、1文字目なら 𝑁=1、そして2文字目なら 𝑁=2、…のように、「𝑖文字目の文字を𝑖回右にずらす」ことにしました。(ずらした結果、文字'𝑍'を超える場合はシーザー暗号と同様に文字'𝐴'へ戻ります)右にずらすとはアルファベット順の次の文字にするということにします。そして太郎君は、この新しい暗号方式を「うーさー暗号」と名づけました。入力に「うーさー暗号」で暗号化された文字列S が1行(1024文字以内)で与えられます。文字列S を構成する各文字はアルファベット大文字('A'-'Z')のみで、復号後の文字列もすべてアルファベット大文字のみで構成されます。入力文字列を復号した文字列を出力。最後に改行してください。*/#include <stdio.h>int main(void){char S[1025];int i;scanf("%s",S); // 暗号化した文字列が入力されるfor (i = 0; S[i] != 0; i++){S[i] -= ((i + 1) % 26);while (S[i] < 65 ){S[i] += 26;}}printf("%s\n",S);return 0;}