P1582-倒水

 1 #include <bits/stdc++.h>
 2 #define _for(i,a,b) for(int i = (a);i < b;i ++)
 3 typedef long long ll;
 4 using namespace std;
 5 
 6 inline ll read()
 7 {
 8     ll ans = 0;
 9     char ch = getchar(), last = ' ';
10     while(!isdigit(ch)) last = ch, ch = getchar();
11     while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();
12     if(last == '-') ans = -ans;
13     return ans;
14 }
15 inline void write(ll x)
16 {
17     if(x < 0) x = -x, putchar('-');
18     if(x >= 10) write(x / 10);
19     putchar(x % 10 + '0');
20 }
21 ll N,K;
22 int bitcount (ll n)
23 {
24     int count=0;
25     while (n)
26     {
27         count += n & 0x1u ;
28         n >>= 1 ;
29     }
30     return count ;
31 }
32 int main()
33 {
34     N = read(), K = read();
35     ll rnt = 0;
36     while(1)
37     {
38         if(bitcount(N) <= K)
39             break;
40         rnt += N&(-N),N += N&(-N);
41     }
42     write(rnt);
43     return 0;
44 }

 

posted @ 2019-08-16 09:49  Asurudo  阅读(171)  评论(0编辑  收藏  举报