簡単なパスワード(PekingUniversityのマシンでの再テスト)

序文:

21.再テストに参加できるかどうかに関係なく、道路に書かれたゴミコードを記録します。もともと「AlgorithmNotes」をかじったのですが、やりすぎたので、Kingway ComputerTestGuideに変更しました。

タイトル説明:

Julius Caesarは、かつて非常に単純なパスワードを使用していました。プレーンテキストの各文字について、アルファベットの最後の5桁に対応する文字に置き換えて、暗号テキストを取得します。たとえば、文字AはFに置き換えられます。以下は、暗号文と平文の文字の対応です。Ciphertext ABCDEFGHIJKLMNOPQRSTU VWXYZ plaintext VWXYZABCDEFGHIJKLMNOP QRSTUタスクは、指定された暗号テキストを復号化してプレーンテキストを取得することです。注意が必要なのは、暗号テキストに表示される文字がすべて大文字であるということです。暗号テキストには文字以外の文字も含まれているため、これらの文字をデコードする必要はありません。

説明を入力してください

入力のテストデータは100グループを超えません。データの各セットの形式は次のとおりであり、テストデータの各セットの間に空白行はありません。
テストデータのセットには、次の3つの部分が含まれます。

  1. 開始行-文字列「START」を含む1行
  2. 暗号化テキスト-1行、暗号化テキストを示し、暗号化テキストは空ではなく、その中の文字数は200を超えません
  3. 終了行-文字列「END」を含む1行、
    文字列「ENDOFINPUT」を含む最後のテストデータセットの後に行があります。

出力の説明:

データのグループごとに、暗号テキストに対応するプレーンテキストを提供する出力行があります。

回答

#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;

int main()
{
    
    	
	string str;
	while (getline(cin,str)) {
    
    
		if (str == "START" || str == "END")
			continue;
		else
			if (str == "ENDOFINPUT")
				break;
		else{
    
    
			for (int i = 0; i < str.length(); i++)
				if (str[i] >= 'A' && str[i] <= 'Z')
					if (str[i] - 5 >= 65)
						str[i] -= 5;
					else
						str[i] = 'Z' + str[i] - 'A' - 4;
			cout << str << endl;
		}
	}
	return 0;
}

おすすめ

転載: blog.csdn.net/weixin_44897291/article/details/112816956