第十屆 藍橋杯樣題 5個砝碼

2022-09-07 21:39:21 字數 930 閱讀 9712

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

如果只有5個砝碼,重量分別是1,3,9,27,81。則它們可以組合稱出1到121之間任意整數重量(砝碼允許放在左右兩個盤中)。

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

例如:

使用者輸入:

5 程式輸出:

9-3-1

使用者輸入:

19程式輸出:

27-9+1

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

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

我們把已知的砝碼序列記為:x1, x2, x3, x4, x5, x6 (這裡多加乙個標準砝碼,為解題敘述方便)

對於任意給定的重量x,如果剛好等於xi 則問題解決。

否則一定會位於兩個標準砝碼重量的中間,不妨設為:xi < x < xj

令 a = x – xi, b = xj – x

則,x 要麼可以表示為: xi + a, 要麼可以表示為: xj – b

這樣問題就歸結為怎樣表示出 a 或 b

另一思路:對於每個xi,可以乘以乙個係數ki,再求和。

ki的數值無外乎:-1 0 1

這樣,因為標準砝碼的數量的很少的,我們就可以多層迴圈暴力組合ki來求解。

還有更「土氣」但有效的思路:既然輸入範圍只有120左右,如果對每一種情況都做人工求解,只要列乙個大表,等查詢的時候,直接輸出答案就好了啊!但…這似乎是個耗時的工程…

#include

using namespace std;

int weights[5]

=;intmain()

}}}}

}return0;

}

第十屆 藍橋杯樣題 信用卡號驗證

當你輸入信用卡號碼的時候,有沒有擔心輸錯了而造成損失呢?其實可以不必這麼擔心,因為並不是乙個隨便的信用卡號碼都是合法的,它必須通過luhn演算法來驗證通過。該校驗的過程 1 從卡號最後一位數字開始,逆向將奇數字 1 3 5等等 相加。2 從卡號最後一位數字開始,逆向將偶數字數字,先乘以2 如果乘積為...

第十屆藍橋杯 JavaA 迷宮

法一 思路 bfs,path記錄路徑。1.程式設計 2.觀察 description todo author frontier time 2019年4月9日 上午11 19 05 class node public class d迷宮 增量陣列,方向向量,直接按字典序排列 static int y ...

第十屆藍橋杯 RSA 解密

記錄一下自己的學習過程啦 上題目 問題描述 rsa 是一種經典的加密演算法。它的基本加密過程如下。首先生成兩個質數 p,q,令 n p q,設 d 與 p 1 q 1 互質,則可 找到 e 使得 d e 除 p 1 q 1 的餘數為 1。n,d,e 組成了私鑰,n,d 組成了公鑰。當使用公鑰加密乙個...