# Funny Encryption Method 題目連結 [UVA 10019](https://onlinejudge.org/external/100/10019.pdf) ## 中文簡述 輸入一個N, 先把N當成10進位來看,轉成2進位有多少個1 再把N當成16進位來看,轉成2進位有多少個1 ## [think] * 10進位轉2進位 先取餘數,在加到cnt * 16進位轉2進位 先建立一個表格,紀錄1-9個別有幾個1 之後累加到cnt ## solution: ``` #include<bits/stdc++.h> using namespace std; int getbin(int n) { int cnt=0; while(n) { cnt+=n%2; n/=2; } return cnt; } int gethex(int n) { string a=to_string(n); int i,cnt=0,hex[]={0,1,1,2,1,2,2,3,1,2}; for(i=0;i<a.length();i++) { cnt+=hex[(int)a[i]-'0']; } return cnt; } int main() { int i,n,num,b1,b2; while(cin>>n) { for(i=0;i<n;i++) { cin>>num; b1=getbin(num); b2=gethex(num); cout<<b1<<" "<<b2<<endl; } } } ``` ###### tags: `UVA` 回目錄 [學習筆記](/gIBZqAbWTCis7uOPp149gA)