#include #include #include using namespace std; #define INF 2000000007 int bitcount32(int dw32) // 32 bits 値) { // 32 bits 限定アルゴリズムを利用している int cnt = 0; while(dw32){ if(dw32 & 1) cnt += 1; dw32 >>= 1; } return cnt; }//bitcount32 int main(){ int N; scanf("%d",&N); //int cnt = 1; vector flag(N+1,false); vector DP(N+50,INF); DP[0] = -1; DP[1] = 0; for(int i=1;i DP[i]+1){ DP[i-cnt] = DP[i]+1; i -= cnt+1; //printf("Back : %d[%d]\n",i+1,DP[i]); } } printf("%d\n",DP[N]!=INF ? DP[N]+1 : -1); }