# 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)