제목: [NOIP 1999] 회 문 수 제목 은 한 개의 수 (첫 번 째 가 0 이 아 닌 것) 를 왼쪽 에서 오른쪽으로 읽 는 것 과 오른쪽 에서 왼쪽으로 읽 는 것 이 똑 같 아서 우 리 는 이 를 '라 고 부른다. 제목: [NOIP 1999] 회 문 수 제목 설명 만약 에 한 개의 수 (첫 번 째 가 0 이 아니 라) 가 왼쪽 에서 오른쪽으로 읽 는 것 과 오른쪽 에서 왼쪽으로 읽 는 것 이 똑 같 으 면 우 리 는 이 를 회 문 수로 부른다. 예 를 들 어 10 진수 56 를 주어진 다. 56 에 65 (즉 56 를 오른쪽 에서 왼쪽으로 읽 는 것) 를 더 하면 121 을 얻 을 수 있다. 그리고 예 를 들 어 10 진법 에 대해 87: STEP 1: 87 + 78 = 165 STEP 2: 165 + 561 = 726 STEP 3: 726 + 627 = 1353 STEP 4: 1353 + 3531 = 4884 여기 서 한 단 계 는 N 진법 을 한 번 진행 한 것 을 말 하 는데, 상기 사례 는 최소 4 보 를 사용 하여 답장 수 4884 를 얻 었 다. 입력 양식 첫 줄 은 정수 N (2) 입 니 다.

제목: [NOIP 1999] 회 문 수 제목 은 한 개의 수 (첫 번 째 가 0 이 아 닌 것) 를 왼쪽 에서 오른쪽으로 읽 는 것 과 오른쪽 에서 왼쪽으로 읽 는 것 이 똑 같 아서 우 리 는 이 를 '라 고 부른다. 제목: [NOIP 1999] 회 문 수 제목 설명 만약 에 한 개의 수 (첫 번 째 가 0 이 아니 라) 가 왼쪽 에서 오른쪽으로 읽 는 것 과 오른쪽 에서 왼쪽으로 읽 는 것 이 똑 같 으 면 우 리 는 이 를 회 문 수로 부른다. 예 를 들 어 10 진수 56 를 주어진 다. 56 에 65 (즉 56 를 오른쪽 에서 왼쪽으로 읽 는 것) 를 더 하면 121 을 얻 을 수 있다. 그리고 예 를 들 어 10 진법 에 대해 87: STEP 1: 87 + 78 = 165 STEP 2: 165 + 561 = 726 STEP 3: 726 + 627 = 1353 STEP 4: 1353 + 3531 = 4884 여기 서 한 단 계 는 N 진법 을 한 번 진행 한 것 을 말 하 는데, 상기 사례 는 최소 4 보 를 사용 하여 답장 수 4884 를 얻 었 다. 입력 양식 첫 줄 은 정수 N (2) 입 니 다.

이 문 제 는 아주 간단 하 다. 단지 기본 적 인 프로 그래 밍 능력 을 검 사 했 을 뿐, 말 할 만 한 어려움 이 없다. 세심 하기 만 하면 본 문제 의 점 수 는 쉽게 손 에 넣 을 수 있다.
이 숫자 는 처리 가 편리 하기 때문에 문자열 로 표시 합 니 다.
N 진법 은 본 주제 의 중요 한 부분 입 니 다. 다음 과 같이 처리 합 니 다.
1) 문자 - > 숫자 는 배열 로 프로그램 을 간소화 할 수 있 습 니 다. 즉, digit 와 chars 배열 입 니 다.
2) 덧셈 을 하여 여러분 의 숫자 와 진 위 를 보류 하고 높 은 정밀도 의 덧셈 을 하 는 것 과 같다.
g 는 입장 입 니 다.
const.
step: integer = 0;
chars: array[0. 15] of char = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
var.
digit: array[char] of integer;
i, n, g: integer;
m, s: string;
ok: boolean;
begin
for i: = 0 to 9 do digit [char (ord (0) + i)]: = i;
for i: = 0 to 5 do digit [char (ord (A) + i)]: = i + 10;
write (n =); readln (n);
write ('m ='); readln (s);
for i: = 1 to length (s) do s [i]: = upcase (s [i];
repeat
ok: = true;
for i: = 1 to length (s) div 2 do
if s [i] s [length (s) + 1 - i] then ok: = false;
if ok then break;
inc (step);
m: = s; g: 0;
for i: = length (m) 다운 토 1 도
begin
s [i]: = chars [(digit [m [i] + digit [m [length (m) + 1 - i] + g) mod n];
g: = (digit [m [i] + digit [m [length (m) + 1 - i] + g) div n;
end;
if g > 0 then s: = chars [g] + s;
until step > = 30;
if ok then
writeln ("STEP =", step)
else.
writeln ('Imposible');
end.
문제 없 으 면 채택 하 시고, 문제 가 있 으 면 추궁 하 십시오.