要求:
給乙個十進位制數n,求出n二進位制各個數字的和
方法:
除以2取餘法,將值相加即可
#include
using
namespace std;
intmain()
cout << ans << endl;
return0;
}
eg: 6=110,有2個1; 1023=1111111111,有10個1。
如果把每位的數值做標記:
定義temp變數,在處理個位的時候值為1,迴圈結束後乘2
temp的值依次變為1,2,4,8,16…
temp也可以表示別的意義,如:處理個位的時候為0,迴圈結束後加1,這樣就是求該位2的乘方的形式
eg:45=25+23+23+20
#include
using
namespace std;
intmain()
cout << ans << endl;
return0;
}
例題:
題目描述
b市的工人們天天抱著腦袋,因為食品生產線上,他們用0和1來表示是否新增原料,而原料的種類,總計多達20種……輸出更頭疼的是,電路板上的數字,對於工人來說是乙個不小的難題。電路板上的led螢幕總是把0和1的資料,轉化成乙個十進位制的數,於是每次,工人們就會天天計算12039這種數字的二進位制位,這讓工人們很頭疼
對於乙個數字x(0輸入
乙個數字x,表示led螢幕的數字
乙個等式,x=ei+ej+ek+…+e0,其中,ei,ej,ek….是從大到小的2的乘方樣例輸入 樣例輸出
43=32+8+2+1
#include
#include
using
namespace std;
intmain()
x /=2
; temp *=2
;}cout << num <<
'=';
for(
int i = v.
size()
-1; i >=
1; i--
) cout << v[0]
<< endl;
return0;
}
PTA 雜湊查詢 除留取餘法
pta 聊天狂人 25 分 給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入首先給出正整數n 10 5 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格...
求質數 之 除餘法 C語言描述
這個問題可以有兩種解法 一種是用 篩子法 另一種是從 2 n 逐一檢測出質數。如果要了解 篩法 請看另一篇文章 求質數 之 篩法 現在來介紹第二種方法。用這種方法,最先想到的就是讓從2 n逐一檢查。如果是就顯示出來,如果不是,就繼續檢查下乙個直到超出範圍 n。這是正確的做法,但效率卻不高。當然,2 ...
資料結構 雜湊表(除留取餘法 鏈位址法)
include using namespace std 雜湊函式的構造方法 除留取餘法 typedef struct node node typedef struct hash table hash table 初始化雜湊表 hash table inithashtable 在雜湊表中查詢資料 no...