問題
題目描述
有這樣一道智力題:「某商店規定:三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?」答案是5瓶,方法如下:先用9個空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以後4個空瓶子,用3個再換一瓶,喝掉這瓶滿的,這時候剩2個空瓶子。然後你讓老闆先借給你一瓶汽水,喝掉這瓶滿的,喝完以後用3個空瓶子換一瓶滿的還給老闆。如果小張手上有n個空汽水瓶,最多可以換多少瓶汽水喝?
輸入描述:
輸入檔案最多包含10組測試資料,每個資料佔一行,僅包含乙個正整數n(1<=n<=100),表示小張手上的空汽水瓶數。n=0表示輸入結束,你的程式不應當處理這一行。
輸出描述:
對於每組測試資料,輸出一行,表示最多可以喝的汽水瓶數。如果一瓶也喝不到,輸出0。
思路
模擬好換瓶子的過程就解決了。
**
#include
using
namespace std;
//// @brief:模擬兌換汽水
// @params:sum--兌換汽水的數目;input--每次換完更新的空瓶數目;num--中間變數
// @ret:int
// @birth:created by gabe on 20200630
//int
main()
if(input ==2)
++sum;
cout<}return0;
}
問題
給定乙個排序好的陣列,兩個整數 k 和 x,從陣列中找到最靠近 x(兩數之差最小)的 k 個數。返回的結果必須要是按公升序排好的。如果有兩個數與 x 的差值一樣,優先選擇數值較小的那個數。
示例 1:
輸入: [1,2,3,4,5], k=4, x=3
輸出: [1,2,3,4]
示例 2:
輸入: [1,2,3,4,5], k=4, x=-1
輸出: [1,2,3,4]
說明:
k 的值為正數,且總是小於給定排序陣列的長度。
陣列不為空,且長度不超過 104
陣列裡的每個元素與 x 的絕對值不超過 104
將mid的值和乙個視窗的兩端做比較,決定mid向左移動還是向右移動。標準的二分查詢,細節是魔鬼。。。
**
vector<
int>
findclosestelements
(vector<
int>
& a,
int k,
int x)
return vector<
int>
(a.begin()
+ left, a.
begin()
+ left + k)
;}
每天一刷20200602
問題 寫出乙個程式,接受乙個正浮點數值,輸出該數值的近似整數值。如果小數點後數值大於等於5,向上取整 小於5,則向下取整。思路 其實就是實現乙個正浮點數的四捨五入,可以呼叫math.h中的round 函式直接完成,有點討巧。include include using namespace std in...
每天一刷20200603
問題 編寫乙個函式,計算字串中含有的不同字元的個數。字元在acsii碼範圍內 0 127 換行表示結束符,不算在字元裡。不在範圍內的不作統計。注意是不同的字元 思路 跟之前做過的乙個題相似,那個題是字串去重,稍作修改就行了。include include using namespace std in...
每天一刷20200605
昨天返校,沒有做題。問題 功能 等差數列 2,5,8,11,14 輸入 正整數n 0 輸出 求等差數列前n項和 返回 轉換成功返回 0 非法輸入與異常返回 1 思路 這個題其實就是簡單的等差數列求和,設定好初始項,然後控制好迴圈次數即可。ps 在處理輸入的時候要注意用while 來讀取輸入,不然提交...