题解:按照题意一步步模(乱)拟(搞)
#include <iostream>
#include <cstdio>
using namespace std;
int n,k,tot;
void dfs(int x)
{
int f=(x+k)>>1,s=(x-k)>>1;//分成差为K的两部分(不保证可行)
if(f>0&&s>0&&f+s==x){//方案可行
dfs(f);
dfs(s);
}
else tot++;
}
int main()
{
cin>>n>>k;
dfs(n);
cout<<tot<<endl;
return 0;
}