1068: 二進位制數
某輛汽車有乙個里程表,該里程表可以顯示乙個整數,為該車走過的公里數。然而這個里程表有個毛病:它總是從3變到5,而跳過數字4,里程表所有位(個位、 十位、百位等)上的數字都是如此。例如,如果里程表顯示339,汽車走過1公里之後,該里程表顯示350。
輸入乙個整數num,表示里程表顯示的數值,1 < num < 1000,且一定不含整數4。
輸出乙個整數,為該汽車實際行駛的公里數。例如,如果該里程表顯示55,則實際走過的公里 數是40。
方法1:這對本題資料規模較小的情況,可用乙個迴圈來模擬。用乙個1~num的迴圈,在迴圈過程中,用另乙個迴圈變數計數,統計不含數字4的整數個數。
方法2:此題稍加修改,可轉換為乙個9進製轉換為10進製的問題,此方法更通用。
#include
#include
intmain()
printf
("%d\n"
,k);
return0;
}
將乙個二進位制數,轉換為對應的十進位制數。
輸入乙個二進位制數,以回車結束。該二進位制數為正數,長度不超過31。
輸出乙個整數,為該二進位制數對應的十進位制數。
(1) 整數運算盡量避免pow之類的double型別函式,以免截斷取整帶來錯誤。 (2)可使用遞推思想,充分利用中間結果。類似思想可參考秦九韶演算法。秦九韶演算法是中國南宋時期的數學家秦九韶提出的一種多項式簡化演算法。計算一次多項式f(x) = a0xn + a1x(n-1) + … + an 只需要n次乘法和n次加法。原理是一次多項式f(x)可寫成如下加括號方式:f(x) =(( (a0*x + a1)*x + a2) * x + … an-1) * x + an。自內向外去括號計算,只需要n次乘法和n次加法。
本題從高位到低位依次輸出二進位制數,對應多項式係數a0, a1,…,an, 而x的值為2。遞推過程如下:
d = 0;
while( ch = getchar(), ch != 『\n』)
d = d * 2 + (ch - 『0』);
#include
#include
intmain()
進製轉換問題
基礎 進製轉換問題 easy time limit 1000ms memory limit 65536k total submit 271 accepted 153 description 若將乙個正整數n化為二進位制,在此二進位制數中,我們將數字1的個數多於數字0的個數的這類二進位制數稱為a類數,...
進製轉換問題
基礎 進製轉換問題 easy time limit 1000ms memory limit 65536k total submit 271 accepted 153 description 若將乙個正整數n化為二進位制,在此二進位制數中,我們將數字1的個數多於數字0的個數的這類二進位制數稱為a類數,...
進製轉換問題
一 引題 題目大意 a和b 兩個人一起吃飯,一共有 n道菜,從 0,1,n 1編號,菜按順序輪流上,a只能吃偶數編號的菜,即 0,2,4 b 只能吃奇數編號的的,每個人都可以選擇吃或不吃。每道菜對應乙個歡樂度 2 i i 0,1 n 1 現在知道 d 歡樂度 a b 的值,問他們兩總共吃了幾道菜?解...