給一個數字,計算當看成十進位轉二進位時有多少個1;當看成十六進位轉二進位時有多少個1。
並輸出十進位時的計算的數量與十六進位時的計算數量。
x >>= 1
為X向右移動一位X & 1
為產生一個值為1或0的值。若最後一位為1,則X & 1為1,否則為0
#include <iostream>
using namespace std;
int main() {
int T, N;
cin >> T;
while (T--){
cin >> N;
int X1 = N;
int b1 = 0;
while (X1){
b1 += X1 & 1;
X1 >>= 1;
}
int X2 = 0;
int mul = 1;
X1 = N;
while (X1){
X2 += (X1 % 10) * mul;
X1 /= 10;
mul *= 16;
}
int b2 = 0;
while (X2){
b2 += X2 & 1;
X2 >>= 1;
}
cout << b1 << " " << b2 << "\n";
}
return 0;
}
火車的進出只有一條路,給一個n表示有1~n個火車,input再給一串數字,代表火車出站順序,如果符合就輸出Yes,否則就輸出No
用deque模擬火車
參考:https://www.larrysprognotes.com/UVa-514/
#include<iostream>
#include<deque>
#include<vector>
using namespace std;
int main(){
int l,temp;
while(cin>>l&&l){
while(true){//為了output因為不同block要換行所以要多跑一個while
deque <int> q;
vector <int> s;
cin>>temp;//輸入的車廂號碼,一定要先輸入一次,不然會無限迴圈
if(temp==0)break;
q.push_back(temp);
for(int i=0;i<l-1;i++){
cin>>temp;
q.push_back(temp);
}
for(int i=1;i<=l;i++){
s.push_back(i);
while(!s.empty()&&q.front()==s.back()){
q.pop_front();
s.pop_back();
}
}
cout<<(s.empty()?"Yes":"No")<<endl;
}
cout<<endl;
}
return 0;
}