每天一刷20200630

2021-10-07 15:13:01 字數 1506 閱讀 5228

問題

題目描述

有這樣一道智力題:「某商店規定:三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?」答案是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 來讀取輸入,不然提交...