結果
| 問題 |
No.18 うーさー暗号
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-02-27 22:14:25 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 5,000 ms |
| コード長 | 913 bytes |
| コンパイル時間 | 14,830 ms |
| コンパイル使用メモリ | 225,664 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-30 11:55:59 |
| 合計ジャッジ時間 | 12,795 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 13 |
ソースコード
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewScanner(os.Stdin)
// 暗号化文字列
in.Scan()
s := in.Text()
fmt.Println(decode(s))
}
// 復号化する。
func decode(s string) string {
dec := ""
// 文字列を1文字ずつループ
// 文字列をループするとbyte(10進数)になる
for i, v := range s {
// iの数だけ減算(iは0から始まるため+1)
as := int(v) - (i + 1)
// A以前の文字になった場合はZに進めるため、26を足す
// 1回だけだとA~Zにならない可能性があるため、A~Zになるまでループする
for {
if as < 65 {
as += 26
} else {
break
}
}
// Z以降の文字になった場合はAに戻すため、26を引く
for {
if as > 90 {
as -= 26
} else {
break
}
}
// 文字列に変換
ch := string(as)
dec += ch
}
return dec
}