HDU 3711 Binary Number
来源:互联网 发布:大连网店美工招聘 编辑:程序博客网 时间:2024/04/29 09:19
Binary Number
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 472 Accepted Submission(s): 313
Problem Description
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 A such that f(a, b) is minimized. If there are more than one such integer 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
22 512123455 21000000999914233421013245353
Sample Output
1211199990
Author
CAO, Peng
Source
2010 Asia Chengdu Regional Contest
比较简单的一个题,就是判断指定两数字转化成二进制后相应位上数字不同的个数。
代码如下:
#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<cmath>#include<ctime>using namespace std;int INT_cmp(const void *a, const void *b){ return *(int*)a - *(int*)b;}int compare(int n, int m){ int ct = 0; int num_n, num_m; while(n || m) { num_n = n % 2; num_m = m % 2; m /= 2; n /= 2; if(num_n != num_m) ++ct; } return ct;}int main(){#ifdef test freopen("in.txt", "r", stdin);#endif int t, m, n; int M[102], N[102]; scanf("%d", &t); while(t--) { scanf("%d%d", &m, &n); for(int i = 0; i < m; i++) scanf("%d", &M[i]); for(int i = 0; i < n; i++) scanf("%d", &N[i]); qsort(M, m, sizeof(M[0]), INT_cmp); for(int i = 0; i < n; i++) { int min = 0x7FFFFFFF,min_num; for(int j = 0; j < m; j++) { int ans = compare(N[i], M[j]); if(ans < min) { min = ans; min_num = M[j]; } } printf("%d\n",min_num); } } return 0;}
- HDU 3711 Binary Number
- Hdu 3711 Binary Number
- HDU 3711 Binary Number
- hdu 3711 Binary Number
- HDU 3711 Binary Number
- hdu 3711----Binary Number
- 枚举->HDU 3711 Binary Number
- HDU 3711 D - Binary Number
- HDU-3711 Binary Number(贪心)
- (枚举)HDU 3711 Binary Number
- HDU 3711 Binary Number【水题】【bitset】
- hdoj 3711 Binary Number
- 杭电 3711 Binary Number
- Binary Number
- number number number HDU
- hdu 6198 number number number
- hdu 6198 number number number
- HDU 6189 number number number
- singleton设计模式,c++实现
- 这都多长时间了?
- CODE128B码在PB10中的实现
- 基本网络命令学习
- lesson3
- HDU 3711 Binary Number
- 面试应该注意的地方
- Struts2获得session和request
- UML类图设计
- java项目如何打成jar包
- C++类和接口的设计原则探讨
- lesson4
- 在VC中使用自定义资源,FindResource,LoadResource,LockResource
- POJ——1276(动态规划,硬币问题)