【洛谷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 }