#1463: 해봐 1
첫 번째 행은 1보다 크거나 같고 106보다 작거나 같은 정수 N을 포함합니다.
www.acmicpc.net
첫 번째 접근은 현재 입력값에서 한 셀씩 내려서 찾으려고 했지만, 낮은 숫자와 높은 숫자를 비교할 때 낮은 숫자의 경우에만 오차가 계산되어 문제가 해결되지 않았다. 이번에는 역순으로 배열을 만들어 문제를 해결했습니다.
하나
2
삼
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
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#포함하다 <iostream>
#포함하다 <벡터>
사용 네임스페이스 기본;
내부 알(1000001) = { 0, 0, 0, 0};
내부 주로()
{
내부 숫자 = 0;
친 >> 숫자;
벡터<내부> vec;
vec.푸시백(하나);
내부 나 = 하나;
만약에 (아니요 != 하나)
{
~하는 동안 (arr(숫자) == 0)
{
벡터<내부> vec2;
~을 위한 (자동차 이터 = vec.시작하다(); 이터 != vec.끝(); ++이터)
{
내부 엑스 = *이터;
만약에 (2 * 엑스 < 1000001 &&알(2 * 엑스) == 0)
{
알(2 * 엑스) = 나;
vec2.푸시백(2 * 엑스);
}
만약에 (삼 * 엑스 < 1000001 && 알(삼 * 엑스) == 0)
{
알(삼 * 엑스) = 나;
vec2.푸시백(삼 * 엑스);
}
만약에 (엑스 + 하나 < 1000001 && 도착(X + 하나) == 0)
{
도착(X + 하나) = 나;
vec2.푸시백(엑스 + 하나);
}
}
vec. 소화 ();
vec = vec2;
++나;
}
}
쿠우트 << 도착(숫자);
돌려 주다 0;
}
|
CS |