본문으로 바로가기
728x90
반응형

[4번 문제]


앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다.

두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다.

세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까?


[ 번역링크 / 원본링크 ]


[코드]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "stdafx.h"
#include "stdlib.h"
#include <iostream>
#include <string>
using namespace::std;
bool num_check(int num)
{
    int length = 0;
    string check = std::to_string(num);
    length = check.length();
 
    for (int i = 0; i < length/2 ; i++)
    {
        if (check.at(i) != check.at(length - (1 + i)))
            return false;
    }
 
    return true;
}
int main()
{
    int ans = 10000, a1, a2;
    int num;
    for (int i = 100; i < 1000; i++)
    {
        for (int j = 100; j < 1000; j++)
        {
            num = i * j;
            if (num_check(num) && (ans < num))
            {
                a1 = i;
                a2 = j;
                ans = num;
                cout << a1 << " // " << a2 << " // " << ans << endl;
            }
        }
    }
    system("pause");
    return 0;
}
cs

728x90
반응형