세정이는 ALOHA 벚꽃컵에 참가하기 위해 PPS(Project PS)에 가입을 하려고 한다.
세정이는 비밀번호를 자신의 생일을 넣어 로 지으려고 했지만,
생일을 그대로 비밀번호에 넣는 것은 보안에 좋지 않을 것이라고 생각했다.
따라서 세정이는 자신이 만든 아스키 암호라는 규칙에 따라 라는 숫자를
암호화 하려고 한다.
아스키 암호는 아스키 코드를 이용한다.
컴퓨터는 모든 정보를 숫자로 저장하기 때문에 문자도 숫자로 바꾸어 저장을 해야한다.
예를 들면 라는 문자도 컴퓨터에는 어떤 정수 값으로 저장이 되는 것이다.
이렇게 문자를 숫자로 바꾸어 저장할 때 ASCII라는 인코딩 방법이 사용된다.
다음은 아스키 코드표의 일부분이다.
| 10진수 | | | 문자(char) |
|---|---|---|
| 48 | 0 | |
| 49 | 1 | |
| 50 | 2 | |
| 51 | 3 | |
| 52 | 4 | |
| 53 | 5 | |
| 54 | 6 | |
| 55 | 7 | |
| 56 | 8 | |
| 57 | 9 |
위의 표에 의하여
char c = '0';
char형 변수 c에는 이라는 정수 값이 저장돼있다.
int i = 48;
char c = 48;
cout << (char)i << ' ' << c << '\n';
ASCII에 의하여 위의 코드의 출력 결과는 이다.
아스키 암호의 규칙은 다음과 같다.
위의 규칙에 따라 숫자 의 암호화 결과는 이다. (는 아스키 코드로 이고, 각 자리 수를 더하면 이므로)
아스키 암호는 이상 이하의 정수를 이상 이하의 다른 정수로 변환할 수 있다.
아스키 암호를 해독하는 프로그램을 작성해보자.
이상 이하의 정수 A가 주어진다.
A가 아스키 암호를 거치기 전에 어떤 수였는지 출력한다.
아스키 암호에 의하면 과 의 암호화 결과가 로 같다.
이렇게 해독 결과가 2개 이상이 되는 경우, 둘 중 큰 수를 출력한다.
즉 출력 값의 범위는 1 이상 9 이하의 정수이다.
12
9