Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
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
Archives
Today
Total
관리 메뉴

PS 부수기

Project Euler #14 : 백만 이하로 시작하는 우박수 중 가장 긴 과정을 거치는 것은? 본문

Project Euler

Project Euler #14 : 백만 이하로 시작하는 우박수 중 가장 긴 과정을 거치는 것은?

jyheo98 2020. 8. 7. 11:54
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] != -1return dp[num];
    int ret = 0;
    if (num == 1return 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, 11000001) {
        dp[i] = ubak(i);
        if (mmax < dp[i]) {
            mmax = dp[i];
            maxIndex = i;
        }
    }
    cout << maxIndex;
}
cs

메모이제이션 없이 하니 10초쯤 걸렸다.

하니깐 0.5초

map으로 하면 좀 더 빨라질듯?

Comments