藍橋杯訓練 天平稱重

2021-09-11 07:19:37 字數 1439 閱讀 7036

用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。

如果只有5個砝碼,重量分別是1,3,9,27,81

則它們可以組合稱出1到121之間任意整數重量(砝碼允許放在左右兩個盤中)。

本題目要求程式設計實現:對使用者給定的重量,給出砝碼組合方案。

例如:使用者輸入:

5程式輸出:

9-3-1

使用者輸入:

19程式輸出:

27-9+1

要求程式輸出的組合總是大數在前小數在後。

可以假設使用者的輸入的數字符合範圍1~121。

模擬幾組稱重資料, 設整數n的排列方式為f(n)

f(1) = 1

f(2) = 3 - 1 = 3 - f(1)

f(3) = 3

f(4) = 3 + f(1)

f(5) = 9 - 3 - 1 = 9 - f(5)

主要要發現 n 與的關係

**:

// 將+,-號調換, 相當於式子 *-1, 順序不能變

static string reve

(string s)

static string f

(int n)

if(n == s)

return s +"";

else

if(n <= s/2)

else

}

注意的地方是, 需要變符號

進製解法相對來說更好理解一些

其實都是3的次方

那我們就可以通過將乙個數字轉換成3進製來表示這個數字

例如28, 用3進製表示就是1001, 因此等於28 = 3^3 + 3^0 = 27 + 1

但要注意3進製裡會存在2, 這時需要將2轉換, 在使用短除法遇到餘數為2的情況的時候, 可以將餘數2轉換為-1, 商+1

例如19, 原來用3進製表示是201

轉換以後可以表示為1-101 = 3^3 - 3^2 + 3^0 = 27 - 9 + 1

**:

static string f2

(int n)

;int

arr =

newint

[100];

int i =0;

while

(n !=0)

i++;}

string s ="";

for(

int j = i; j >=

0; j--

) s +=

(t[j]

*flag);}

return s;

}

藍橋杯訓練 天平稱重

用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。如果只有5個砝碼,重量分別是1,3,9,27,81 則它們可以組合稱出1到121之間任意整數重量 砝碼允許放在左右兩個盤中 本題目要求程式設計實現 對使用者給定的重量,給出砝碼組合方案。例如 使用者輸入 5程式輸出 9 3 1 使用者輸入...

藍橋杯 天平稱重

用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。如果只有5個砝碼,重量分別是1,3,9,27,81 則它們可以組合稱出1到121之間任意整數重量 砝碼允許放在左右兩個盤中 本題目要求程式設計實現 對使用者給定的重量,給出砝碼組合方案。例如 使用者輸入 5程式輸出 9 3 1 使用者輸入...

藍橋杯考試 找規律 天平稱重

題目 用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。如果只有5個砝碼,重量分別是1,3,9,27,81 則它們可以組合稱出1到121之間任意整數重量 砝碼允許放在左右兩個盤中 本題目要求程式設計實現 對使用者給定的重量,給出砝碼組合方案。例如 使用者輸入 5程式輸出 9 3 1 使用...