結果
| 問題 | No.18 うーさー暗号 | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2018-02-27 21:46:44 | 
| 言語 | Go (1.23.4) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 2 ms / 5,000 ms | 
| コード長 | 944 bytes | 
| コンパイル時間 | 14,702 ms | 
| コンパイル使用メモリ | 239,780 KB | 
| 実行使用メモリ | 6,820 KB | 
| 最終ジャッジ日時 | 2024-11-30 07:27:44 | 
| 合計ジャッジ時間 | 15,523 ms | 
| ジャッジサーバーID (参考情報) | judge3 / 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
			}
		}
		for {
			if as < 65 {
				as += 26
			} else {
				break
			}
		}
		// Z以降の文字になった場合はAに戻すため、26を引く
		if as > 90 {
			as -= 26
		}
		// 文字列に変換
		ch := string(as)
		dec += ch
	}
	return dec
}
            
            
            
        