Mike and Chocolate Thieves(CF #361 Div. 2)
生活随笔
收集整理的這篇文章主要介紹了
Mike and Chocolate Thieves(CF #361 Div. 2)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
看到這道題時,總感覺題目意思有點奇怪,看樣例和最下面的Note可以大概知道它在說什么。
題目大意:四個小偷去偷巧克力,且后一個偷的數量是前一個的 k 倍,而小偷的背包最多可以放 n 塊巧克力,問 n 最小為多少。附鏈接:http://codeforces.com/problemset/problem/689/C。
大體思路:通過樣例和Note,再結合描述,可以判斷出實際就是求不等式 a*k^3<=n,n的最小值,而題目給的 m 值則是 a、k的組合數,用二分法,可以二分 a 值求 k,也可以二分 k 值求a,然后計算 a 和 k 的組合數。
以下為ac代碼:
#include<iostream> using namespace std; int main(){long long m;cin>>m;//m=1;long long l=1,r=1e20;long long result=-1;while(r>=l){long long mid=(r+l)/2;long long num=0;for(long long i=2;i*i*i<=mid;i++)num+=mid/(i*i*i);if(num==m)result=mid;if(num>=m)r=mid-1; //整數的話要加1,浮點數就不用elsel=mid+1; //同上}cout<<result<<endl;return 0; }總結
以上是生活随笔為你收集整理的Mike and Chocolate Thieves(CF #361 Div. 2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件产品运营与维护
- 下一篇: CAD中如何使用Lisp程序编写坐标标注