#想請教TOI線上練習賽的pA
1 messages · Page 1 of 1 (latest)
喔喔沒注意到,我先刪文,感謝提醒🙏
卡題目
是這題八
//wa
#include <bits/stdc++.h>
#define ll long long int
#define M 200005
using namespace std;
ll n,r;
ll a[M];
bool deal(ll money){
for(int i = 0; i < n; i++){
if(money%r!=0)money=money+(money/r)+1;
else money=money+(money/r);
money-=a[i];
if(money<=0)return 1;
}
return (money<=0);
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>n>>r;
for(int i = 0; i < n; i++){
cin>>a[i];
}
ll l=0,R=1e15,mid;
while(R-l>1){
mid=(l+R)/2;
if(deal(mid))l=mid;
else R=mid;
}
cout<<l<<'\n';
}
測測資感覺是對的
瞄了一下題目,我猜是溢位
hmm題目說無條件進位至整數欸
deal是在處理這個的
喔沒事我剛沒看懂你的處理方式
可是我看了一下第一組子題的範圍,最糟的狀況應該就會溢位了吧
如果P=1,那每次的金額不都會是money+money/1
🤨
我手邊沒電腦,你要不要自己試著把二分搜時的money變化印出來?
阿哩
似乎溢蠻多的?
阿~它是複利阿
難怪長哪麼快
可是都用到long long了,而且money感覺是必要的
||用long long long||
發現之後扣不完當前金額就跳掉?
嗯嗯嗯,好像可以欸