題目描述
這道題經歷了 70 80 90 100的坎坷路程
易得2的次方個瓶子可以倒在一起,所以只需要每一次找出n中最大的2的次方的數,將n減去這個數,k–,直到k=1
然後找出比k大的最小2的次方數,用這個數減去k就是答案。
然而我只得了70分,後來我想是不是2的31次方是不是不能用int,果然改了long long後我高了10分
然後我繼續想會不會中間就把水倒完了,還沒有用到k個杯子,改了以後,果然又高了10分
最後 當k=1時,如果n=1,也是不用買新的了,果然這道題終於過了。
由此可見 思路對了 細節是多麼的重要
#include#include#includeusing namespace std;
int n,k,ans,fl;
long long a[35];
int main()
k--;
}int i;
if(fl==1||n==1)
for(i=1;i<=31;i++) if(a[i]>n) break;
ans=a[i]-n;
printf("%d",ans);
return 0;
}
洛谷P1582 倒水
一天,cc買了n個容量可以認為是無限大的瓶子,開始時每個瓶子裡有1公升水。接著 cc發現瓶子實在太多了,於是他決定保留不超過k個瓶子。每次他選擇兩個當前含水量相同的瓶子,把乙個瓶子的水全部倒進另乙個裡,然後把空瓶丟棄。不能丟棄有水的瓶子 顯然在某些情況下cc無法達到目標,比如n 3,k 1。此時cc...
洛谷P1582 倒水
一天,cc買了n個容量可以認為是無限大的瓶子,開始時每個瓶子裡有1公升水。接著 cc發現瓶子實在太多了,於是他決定保留不超過k個瓶子。每次他選擇兩個當前含水量相同的瓶子,把乙個瓶子的水全部倒進另乙個裡,然後把空瓶丟棄。不能丟棄有水的瓶子 顯然在某些情況下cc無法達到目標,比如n 3,k 1。此時cc...
洛谷P1582 倒水
一天,cc買了n個容量可以認為是無限大的瓶子,開始時每個瓶子裡有1公升水。接著 cc發現瓶子實在太多了,於是他決定保留不超過k個瓶子。每次他選擇兩個當前含水量相同的瓶子,把乙個瓶子的水全部倒進另乙個裡,然後把空瓶丟棄。不能丟棄有水的瓶子 顯然在某些情況下cc無法達到目標,比如n 3,k 1。此時cc...