iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0

UVA10019

點我進UVA10019

題意:

給一個數字,計算當看成十進位轉二進位時有多少個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;
}

UVA514

點我進UVA514

題意:

火車的進出只有一條路,給一個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;
}

上一篇
[Day26]UVA10324 & UVA12640
下一篇
[Day28] UVA11005
系列文
30天從0開始的NCPC之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言