【洛谷P1582】倒水

倒水

题目链接

显然,2^x个杯子里的水可以倒在一个杯子里

所以我们可以贪心地每次将N中最大的2^x减掉

减k次(若中途已经为0,直接输出0)

若大于0,用最小的比N大的2^x减剩下的N,即为答案

 1 #include<cstdio>
 2 #include<cmath>
 3 int n,k,ans,i;
 4 int main()
 5 {
 6     scanf("%d%d",&n,&k);
 7     for(i=1;i<k;i++){
 8         n-=(1<<int(log2(n)));
 9         if(!n) break;
10     }
11     if(n<2) ans=0;
12     else ans=(1<<(int(log2(n))+1))-n;
13     printf("%d\n",ans);
14     return 0;
15 }

 

posted @ 2018-07-27 21:17  yjk  阅读(111)  评论(0编辑  收藏  举报