PS 부수기
Project Euler #14 : 백만 이하로 시작하는 우박수 중 가장 긴 과정을 거치는 것은? 본문
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
VI dp(1000001, -1);
int ubak(llong num) {
if (num <= 1000000 && dp[num] != -1) return dp[num];
int ret = 0;
if (num == 1) return ret;
if (num % 2) ret = 1 + ubak(3 * num + 1);
else ret = 1 + ubak(num / 2);
return ret;
}
int main() {
int mmax = -1;
int maxIndex;
rep(i, 1, 1000001) {
dp[i] = ubak(i);
if (mmax < dp[i]) {
mmax = dp[i];
maxIndex = i;
}
}
cout << maxIndex;
}
|
cs |
메모이제이션 없이 하니 10초쯤 걸렸다.
하니깐 0.5초
map으로 하면 좀 더 빨라질듯?
'Project Euler' 카테고리의 다른 글
Project Euler #16 : 2^1000의 각 자릿수를 모두 더하면? (0) | 2020.08.07 |
---|---|
Project Euler #15 : 20×20 격자의 좌상단에서 우하단으로 가는 경로의 수 (0) | 2020.08.07 |
Project Euler #13 : 50자리 수 100개를 더한 값의 첫 10자리 구하기 (0) | 2020.08.07 |
Project Euler #12 : 500개 이상의 약수를 갖는 가장 작은 삼각수는? (0) | 2020.08.07 |
Project Euler #11 : 20×20 격자에서 연속된 네 수의 곱 중 최댓값 (0) | 2020.08.07 |
Comments