您好,登錄后才能下訂單哦!
這篇“c++分糖果問題怎么解決”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“c++分糖果問題怎么解決”文章吧。
紅太陽幼兒園有 n 個小朋友,你是其中之一。保證 n≥2。
有一天你在幼兒園的后花園里發現無窮多顆糖果,你打算拿一些糖果回去分給幼兒園的小朋友們。
由于你只是個平平無奇的幼兒園小朋友,所以你的體力有限,至多只能拿 R 塊糖回去。
但是拿的太少不夠分的,所以你至少要拿 LL 塊糖回去。保證 n≤L≤R。
也就是說,如果你拿了 k 塊糖,那么你需要保證 L≤k≤R。
如果你拿了 k 塊糖,你將把這k 塊糖放到籃子里,并要求大家按照如下方案分糖果:只要籃子里有不少于 n 塊糖果,幼兒園的所有 n 個小朋友(包括你自己)都從籃子中拿走恰好一塊糖,直到籃子里的糖數量少于 n 塊。此時籃子里剩余的糖果均歸你所有——這些糖果是作為你搬糖果的獎勵。
作為幼兒園高質量小朋友,你希望讓作為你搬糖果的獎勵的糖果數量(而不是你最后獲得的總糖果數量!)盡可能多;因此你需要寫一個程序,依次輸入 n,L,R,并輸出你最多能獲得多少作為你搬糖果的獎勵的糖果數量。
輸入格式輸入一行,包含三個正整數 n,L,R,分別表示小朋友的個數、糖果數量的下界和上界。
輸出格式輸出一行一個整數,表示你最多能獲得的作為你搬糖果的獎勵的糖果數量。
輸入輸出樣例輸入 #1復制 7 16 23 輸出 #1復制 6 輸入 #2復制 10 14 18 輸出 #2復制 8 輸入 #3復制 見附件中的 candy/candy3.in。 輸出 #3復制 見附件中的 candy/candy3.ans。 說明/提示 【樣例解釋 #1】
拿 k = 20 塊糖放入籃子里。
籃子里現在糖果數 20≥n=7,因此所有小朋友獲得一塊糖;
籃子里現在糖果數變成 113≥n=7,因此所有小朋友獲得一塊糖;
籃子里現在糖果數變成 6<n=7,因此這 66 塊糖是作為你搬糖果的獎勵。
容易發現,你獲得的作為你搬糖果的獎勵的糖果數量不可能超過 6 塊(不然,籃子里的糖果數量最后仍然不少于 n,需要繼續每個小朋友拿一塊),因此答案是 6。
【樣例解釋 #2】
容易發現,當你拿的糖數量 kk 滿足 14 = L \le k \le R = 1814=L≤k≤R=18 時,所有小朋友獲得一塊糖后,剩下的 k - 10k?10 塊糖總是作為你搬糖果的獎勵的糖果數量,因此拿 k = 18k=18 塊是最優解,答案是 88。
【數據范圍】對于所有數據,保證 2≤n≤L≤R≤10 ^9
這道題主要是判斷糖的最少數量和最多數量是否在一個區間內,比如十個人,那么糖果1-9,10-19就是不同的區間,如果不在一個區間內,那么人數減一就是答案,如果在一個區間內,r%n的值就是答案AC代碼如下
#include<cmath> #include<cstdio> #include<cstring> #include<iostream> using namespace std; int n,l,r; int c; int mx; int main(){ // freopen("candy.in","r",stdin); // freopen("candy.out","w",stdout); cin>>n>>l>>r; if(l/n<r/n) cout<<n-1<<endl; else cout<<r%n<<endl; }
以上就是關于“c++分糖果問題怎么解決”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。