※이 설명은 공식 솔루션이 아닌 작성자의 개인적인 솔루션입니다.
이 문제는 작년 저희학교 경시대회 예비소집에 쓰였던 문제 중 하나입니다.
이 문제에서 제일 중요한 핵심은, 곱셈한 결과의 숫자를 어떻게 뒤집냐가 되는데요.
간단한 수식을 이용해 숫자를 뒤집을 수 있습니다.
지금부터 1234를 뒤집는 방법을 알려드리겠습니다.
1. 변수 2개를 선언하여 a=1234, b=0 으로 잡습니다.
2. 그 다음, a를 10으로 나눈 나머지를 구하고, b에 10을 곱한 다음, 그 나머지를 더해줍니다.
3. 그 다음, a를 10으로 나눕니다. 이 과정을 a=0이 될 때까지 반복합니다.
글로만 봐서는 잘 이해가 안되겠죠? 이 과정을 순차적으로 진행시킨 결과는 다음과 같습니다.
횟수 | a | b |
0 | 1234 | 0 |
1 | 123 | 4(0*10+4) |
2 | 12 | 43(4*10+3) |
3 | 1 | 432(43*10+2) |
4 | 0 | 4321(432*10+1) |
이 방법으로 굉장히 간단히 숫자를 뒤집을 수 있습니다.
이 외에도, 다른 방법으로 숫자를 뒤집을 수 있는 경우도 있는데요. 이 경우를 보시려면 하단 STEPS 바의 +버튼을 클릭하시면 됩니다.
소스코드에는 위에 적은 방법을 구현한 소스가 첨부됩니다. 확인하시고, 복습해 보세요!
※해당 소스코드는 참고용이며, 최적화 된 공식 솔루션 소스가 아닙니다. 이 소스를 그대로 복사하여 이용, 또는 제출하는 행위에 대한 불이익은 책임지지 않습니다.
#include<iostream>
using namespace std;
int main()
{
int n, m, ans=0;
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
int here = n*i, rev=0;
while (here)
{
rev = rev * 10 + here % 10;
here /= 10;
}
ans = max(ans, rev);
}
cout << ans;
}