#include <ビット/ STDC ++ H.> 使用して名前空間STD; int型N-; INT getBits1(N-INT)//バイナリ数は数1の形態で得られる { INT RES = 0; 一方、(N-) { IF( N-&1)RES ++; N - >> = 1; } 戻りRES; } int型getBits2(INT N-) { int型RES = 0; 一方、(N-) { RES ++; N- = N-&(N - 1); //時間は1消去OH } RESを返す; } int型)(主 { しばらく(N - >> CIN) { COUT << getBits1(N-)<< "" << getBits2(N-)<< ENDL; } 戻り0; } // 1 1 = 1 // 2 = 10 1 @ 3 = 112 // 4 = 100 1
トピック:
2非負整数x及びyは、F(x、y)はxとyのバイナリ形式で異なるビットの数として定義されます。例えば、F(2、3)1、F(0,3)= 2、F(5、10)= 4 =。今非負整数AとBの2組の所与、Bの各整数Bについては、F(a、b)が最小になるように整数aを見つけるべきです。集合A内に複数のそのような整数である場合、最小のものを選択。
入力:
入力の最初の行は、テストケースの数を示す整数T(0 <T≤100)です。各テストケースの最初の行は、それぞれ2組のAとBの整数の数を示す(nは100≤、0 <m)の2の正の整数m及びnが含ま。次いで、非負整数を含むそれぞれが従う(M + N)ラインは、大きくない1000000よりも第1のm行は、セットAの整数と他のn行は、集合Bに整数されています
出力:
あなたは出力n行すべき各テストケースについて、それぞれが単一の行の各クエリの結果が含まれています。
サンプル入力:
2 2 5 1 2 1 2 3。 4。 5。 5 2。 1000000 9999 1423 3421 0 13245 353
出力例:
1 2 1 1 1 9999 0
#include <ビット/ STDC ++ H> 名前空間STDを使用して、 int型F(int型N) { int型RES = 0。 (n)は、一方 { RES ++。 N = N・(N-1)。 } RESを返します。 } int型のmain() { [105] int型。 INT T、N、M、I、J、K、ミネソタ州、B、T。 scanf関数( "%のD"、&T)。 一方、(T--) { scanf関数( "%d個の%のD"、&N、&M)。 用(i = 0; iがn <; iは++)のscanf( "%dの"、および[I])。 用(i = 0; iがm <; Iは++) { scanf関数( "%のD"、およびB)。 ミネソタ州= F([0] ^ B)。 K = 0。 (; J <N J ++ J = 1)のために { T = F([J] ^ B)。 IF(ミネソタ州は> T ||ミネソタ== T && [K]> K = J; } } のprintf( "%d個の\ n"、[K])。 } } 0を返します。 }