描述 description
乙個天平,砝碼分別為1g、3g、9g、27g、…6561g,每個砝碼只有乙個,要稱重的物品放在天平的左側,而砝碼允許放在天平的左右兩側。已知乙個物品的重量,問如何稱重?試程式設計解決
。輸入格式 input format
乙個重量n(1≤n≤9000)
輸出格式 output format
將所使用的砝碼重量,按從大到小的順序輸出。其中與物品異側的砝碼用正號表示,與物品同側的砝碼用負號表示。(第乙個砝碼前的正號要省略)
樣例輸入 sample input
15樣例輸出 sample output
27-9-3
時間限制 time limitation
1s注釋 hint
三進製的典型應用
** source
經典題目
神知道為啥我剛剛打過一遍的部落格神秘bug導致我還得再打一遍.......
.思路:剛剛拿到這個題的時候不明白為什麼要用三進製,後來問了問機房的dalao(瀾神),仔細想了想突然明白是為啥了
因為三進製這一位的前一位一定高這一位3倍,又因為所有砝碼都只有乙個且是從1開始後面每乙個都是前乙個的3倍,因為
三進製為1,0,2,這三個數,由題意可知我們每個砝碼只有1個,所以就將2換位-1,並前一位++,以此類推,知道這個陣列裡
面就只有0,-1,1,這三個數。如果a[i]==0那麼就continue,如果為1則+1,為-1則減一。(切記第乙個數上是沒有+號的)
**如下:
#include#include(● ̄(エ) ̄●)#include
#include
#include
#include
using
namespace
std;
int a[100000
];int
main()
for(int i=0;i)
}if(a[len]!=0
) len++;
string s=""
;
int h=1
;
for(int i=1;i)
for(int i=len-1;i>=0;i--)
if(a[i]==-1
)
if(a[i]==1
)
}cout
return0;
}
洛谷 P1633 二進位制
我去考fop zz的 結果他真的秒掉了 我們考慮三個長度為l的串 顯然如果這3個串符合條件的話 我們就只要保證增加2 l級別的值滿足加法原則就好了 所以我們大力dp f i a b c 0 1 i表示位數 a表示x串前i 1個字元所有的1的數量 b,c同理 0 1表示c串在第i位是1還是0 預處理 ...
砝碼稱重(三進製)
題目描述 5個砝碼 用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。如果只有5個砝碼,重量分別是1,3,9,27,81。則它們可以組合稱出1到121之間任意整數重量 砝碼允許放在左右兩個盤中 本題目要求程式設計實現 對使用者給定的重量,給出砝碼組合方案。輸入例如 使用者輸入 5輸出 程...
砝碼稱重(三進製)
題目描述 5個砝碼 用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。如果只有5個砝碼,重量分別是1,3,9,27,81。則它們可以組合稱出1到121之間任意整數重量 砝碼允許放在左右兩個盤中 本題目要求程式設計實現 對使用者給定的重量,給出砝碼組合方案。輸入例如 使用者輸入 5輸出 程...