// // main.cpp // yuki-3 // // Created by Kenta Kodera on 2017/06/18. // Copyright © 2017年 Kenta Kodera. All rights reserved. // // // main.cpp // AOJ-1172-ans // // Created by Kenta Kodera on 2017/06/18. // Copyright © 2017年 Kenta Kodera. All rights reserved. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // isdigit #include using namespace std; int bitnum(int n){ int bit = 0; while(n != 0){ n &= n-1; bit++; } return bit; } int main(){ int N; cin >> N; vector dist(N+1, 0); queue que; que.push(1); dist[1] = 1; while(que.size()){ int n = que.front(); que.pop(); int len = bitnum(n); if(n+len<=N && dist[n+len]==0){ que.push(n+len); dist[n+len] = dist[n]+1; } if(0