#include <iostream> #include <cstdio> using namespace std; int ans=0,n,k; int work(int x){ int num=0; for(;x;x-=x&-x) num++; return num; } int main(){ scanf("%d%d",&n,&k); if(work(n)<=k){ printf("0"); return 0; } while(work(n)>k) ans+=n&-n,n+=n&-n; printf("%d",ans); return 0; }
这个题告诉我们求一的个数的方法,其实不算难吧,但是进制的题思维量是摆在这了