iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
自我挑戰組

c++競程30天系列 第 5

Day 05 Uva10019 - Funny Encryption Method

  • 分享至 

  • xImage
  •  

#1 Uva10019 - Funny Encryption Method

  • 題義
    *此題會給一個T,告訴你有幾筆測資,接下來給你T個N,讓你求出N在2進制出現過幾個1,然後把N當16進制並轉換成二進制出現過幾個1。
  • 解法
    1.先將二進制出現過的1求出來
    2.開始計算出現次數,使用map。
    3.把map丟進vector裡面進行排序。
#include <bits/stdc++.h>
using namespace std;

int main() {
    int t,x;
    cin>>t;
    while(t--){
        cin>>x;
        int y=x,ans=0,ans1=0;
        while(x){
            if(x%2)ans++;
            x/=2;
        }
        int sum=0,count=0;
        while(y){
            int index=y%10;
            sum+=pow(16,count)*index;
            y/=10;
            count++;
        }
        while(sum){
            if(sum%2)ans1++;
            sum/=2;
        }
        cout<<ans<<" "<<ans1<<endl;
    }
}

上一篇
Day 04 Uva299 - Train Swapping
下一篇
Day 08 Uva10035 - Primary Arithmetic
系列文
c++競程30天9
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言