Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 폴리비우스 제곱 암호

<시간/>

이 문제에서는 문자열이 주어지고 Polybius Square Cipher를 사용하여 정수 암호화를 찾아야 합니다. .

폴리비우스 제곱 암호

문자를 숫자로 변환할 때 사용하는 표입니다. 영어 암호화를 위한 테이블은 5X5 테이블입니다. 즉, 영어 사전의 26개 알파벳에 대해 25개의 셀을 포함합니다. 문자 i와 j는 하나의 셀에 함께 보관됩니다.

다음 표는 폴리비우스 제곱 암호를 보여줍니다. -


1 2 3 4 5
1 A B C D E
2 F G H I, J K
3 L M N O P
4 Q R S T U
5 V W X Y Z

테이블의 문자는 무작위로 지정할 수 있습니다. 또한 해당 언어의 알파벳 개수에 따라 표의 크기가 변경될 수 있습니다.

문제를 이해하기 위해 예를 들어보겠습니다.

입력 − 안녕하세요

출력 − 2315313134

이 문제를 해결하기 위해 각 숫자 쌍을 취하여 해당 문자를 확인하는 프로그램을 만들 것입니다.

솔루션의 예시를 보여주는 프로그램 −

#include <cmath>
#include <iostream>
using namespace std;
void LetterToNumber(string str) {
   int R, C;
   for (int i = 0; str[i]; i++) {
      R = ceil((str[i] - 'a') / 5) + 1;
      C = ((str[i] - 'a') % 5) + 1;
      if (str[i] == 'k') {
         R = R - 1;
         C = 5 - C + 1;
      }
      else if (str[i] >= 'j') {
         if (C == 1) {
            C = 6;
            R = R - 1;
         }
         C = C - 1;
      }
      cout<<R<<C;
   }
   cout << endl;
}
int main() {
   string str = "tutorialspoint";
   cout<<"The numeric encryption of string '"<<str<<"' is : ";
   LetterToNumber(str);
   return 0;
}

출력

The numeric encryption of string 'tutorialspoint' is: 4445443442241131433534243344