Project Euler 014 Longest Collatz sequence
2017-02-23 23:09
459 查看
题意:定义一种变换,当n是奇数的时候变成3n+1,当n是偶数的时候变成n/2,有个猜想是所有数都会变回0,问1∼106中变回1步数最长的那个数。
分析:目前只想到记忆化搜索,顺便加点小优化。
分析:目前只想到记忆化搜索,顺便加点小优化。
#include <bits/stdc++.h> #define ll long long #define pii std::pair<int,int> #define mp std::make_pair #define fi first #define se second #define SZ(x) (int)(x).size() #define pb push_back template<class T>inline void chkmax(T &x, const T &y) {if(x < y) x = y;} template<class T>inline void chkmin(T &x, const T &y) {if(x > y) x = y;} template<class T> inline void read(T &x) { char c;int f = 1;x = 0; while(((c=getchar()) < '0' || c > '9') && c != '-'); if(c == '-') f = -1;else x = c-'0'; while((c=getchar()) >= '0' && c <= '9') x = x*10+c-'0'; x *= f; } static int outn; static char out[(int)2e7]; template<class T> inline void write(T x) { if(x < 0) out[outn++] = '-', x = -x; if(x) { static int tmpn; static char tmp[20]; tmpn = 0; while(x) tmp[tmpn++] = x%10+'0', x /= 10; while(tmpn) out[outn++] = tmp[--tmpn]; } else out[outn++] = '0'; } std::unordered_map<ll, int> f; int go(ll x) { if(__builtin_popcount(x) == 1) return __builtin_ctz(x); if(f.count(x)) return f[x]; if(x & 1) return f[x] = go(3 * x + 1) + 1; else return f[x] = go(x >> 1) + 1; } int main() { int max = 0, maxi = -1; for(int i = 1; i <= 1000000; ++i) { int cur = go(i); if(max < cur) max = cur, maxi = i; } printf("%d\n", maxi); return 0; }
相关文章推荐
- 14 Longest Collatz sequence - Project Euler
- project euler 14 Longest Collatz sequence
- Project Euler: Problem 14 Longest Collatz sequence
- PE 014 Longest Collatz sequence
- Longest Collatz sequence
- projecteuler---->problem=14----Longest Collatz sequence
- 欧拉项目第14题 Longest Collatz sequence
- Problem 14:Longest Collatz sequence
- Problem 14:Longest Collatz sequence
- (Problem 14)Longest Collatz sequence
- (Problem 14)Longest Collatz sequence
- Problem 14 Longest Collatz sequence(暴力)
- Longest Collatz sequence
- projecteuler---->problem=14----Longest Collatz sequence
- (Problem 14)Longest Collatz sequence
- 欧拉计划(14)Longest Collatz sequence
- Project Euler Problem 14 Longest Collatz sequence
- LeetCode:2.1.6 Longest Consecutive Sequence
- Longest Consecutive Sequence
- 5C-codeforce Longest Regular Bracket Sequence