2010成都站c題||uvalive5006 二進位制
For 2 non-negative integers x and y, f(x, y) is defined as the number of different bits in the binary format of x and y. For example, f(2, 3)=1, f(0, 3)=2, f(5, 10)=4.
Now given 2 sets of non-negative integers A and B, for each integer b in B, you should find an integer a in Asuch that f(a, b) is minimized. If there are more than one such integers in set A, choose the smallest one.
Input
The first line of the input is an integer T (0 < T ≤ 100), indicating the number of test cases. The first line of each test case contains 2 positive integers m and n (0 < m, n ≤ 100), indicating the numbers of integers of the 2 sets A and B, respectively. Then follow (m + n) lines, each of which contains a non-negative integers no larger than 1000000. The first m lines are the integers in set A and the other n lines are the integers in set B.
Output
For each test case you should output n lines, each of which contains the result for each query in a single line.
Sample Input
2 2 5 1 2 1 2 3 4 5 5 2 1000000 9999 1423 3421 0 13245 353
Sample Output
1 2 1 1 1 9999 0題目大意:對於B中的任意一個數在A中找出一個數,使兩個數的二進位制位不同的位數最少,輸出A中的數。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
int a[105],b[105],m,n;
int judge(int a,int b)
{
if(a<b)
swap(a,b);
int sum=0;
while(b)
{
int x=a&1;
int y=b&1;
if(x!=y)
sum++;
a>>=1;
b>>=1;
}
//printf("(%d %d %d)\n",a,b,sum);
while(a)
{
if(a&1)
sum++;
a>>=1;
}
// printf("%d\n",sum);
return sum;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<m;i++)
scanf("%d",&b[i]);
sort(a,a+n);
for(int i=0;i<m;i++)
{
int minn=0x3f3f3f3f;
int cnt=0;
for(int j=0;j<n;j++)
{
int ans=judge(b[i],a[j]);
if(minn>ans)
{
minn=ans;
cnt=a[j];
}
}
printf("%d\n",cnt);
}
}
return 0;
}
/*
int main()
{
int x,y;
while(~scanf("%d%d",&x,&y))
{
int ans=judge(x,y);
}
return 0;
}*/
相關文章
- 二進位制與二進位制運算
- 進位制詳解:二進位制、八進位制和十六進位制
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- 用C#實現二進位制的減法(包括二進位制小數)C#
- KDE設區--C++的二進位制相容問題C++
- C++二進位制相容問題及解決方法C++
- (二進位制)
- 二進位制
- Effective C# :建立二進位制元件C#元件
- 十進位制——二 (八、十六 )進位制
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- C++輸入十進位制數,輸出對應二進位制數、十六進位制數C++
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 二進位制、十進位制與十六進位制相互轉化
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- Python 進位制互相轉換(二進位制、十進位制和十六進位制)Python
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- 二進位制轉十進位制快速方法
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 什麼是二進位制?二進位制如何轉換?
- 數字邏輯練習題-(二進位制/16進位制模擬)
- c++ 二進位制儲存檔案C++
- C#的二進位制檔案操作C#
- C/C++ 二進位制讀寫 png 檔案C++
- 04 二進位制
- 大話二進位制,八進位制,十進位制,十六進位制之間的轉換
- JavaScript十進位制轉換為二進位制JavaScript
- Oracle二進位制與十進位制轉換Oracle
- 十進位制轉二進位制推導(草稿)
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- python進位制轉換(二進位制、十進位制和十六進位制)及注意事項Python
- Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- C語言十進位制,八進位制,十六進位制輸出分析C語言
- C# 2進位制、8進位制、10進位制、16進位制...各種進位制間的輕鬆轉換C#
- 二進位制方式解決 power 問題