c148. A. Bitwise Reverse
Tags : bitmask 迴圈
Accepted rate : 1人/1人 ( 100% ) [非即時]
評分方式:
Tolerant

最近更新 : 2025-09-13 19:17

Content

薰勳是個熱血的競技程式初學者,他最近正在學習位元運算的相關知識,其中他針對 AND 運算(&)及 OR 運算(|)所做的相關筆記如下:

假設現在有兩個正整數 $x,y$:

  • AND 運算(&)會在每個 bit 上產生結果為 1 若且唯若該位在 $x$ 和 $y$ 中皆為 1。舉例來說,若將 $(6)_{10}=(0110)_2$ 和 $(10)_{10}=(1010)_2$(其中 $(a)_b$ 表示數字 $a$ 以 $b$ 進位制表示的形式)做 AND 運算,會得到 $(0010)_2=(2)_{10}$,故 $6$&$10$ 的結果為 2。
  • OR 運算(|)會在每個 bit 上產生結果為 1 只要該位在 $x$ 或 $y$ 中至少一個為 1。舉例來說,若將 $(5)_{10}=(0101)_2$ 和 $(9)_{10}=(1001)_2$ 做 OR 運算,會得到 $(1101)_2=(13)_{10}$,故 $5$|$9$ 的結果為 13。

薰勳嘗試用程式寫出兩個數字 AND 或 OR 運算後的結果,發現只需使用 C++ 內建的運算子就解決了。不過出自於對程式的好奇,他決定反過來想,若給定兩個整數 $A,B$ 分別代表某兩個正整數 $x,y$ 經 AND 和 OR 運算的結果,是否可以求出 $x,y$ 的值呢?


經過一些嘗試,薰勳知道並非所有 $A,B$ 都有合法的解。但由於薰勳只是隨便代一些數字來測試,他並不知道在什麼情況下會導致無解的狀況。因此,為了正確求得滿足條件的 $x,y$,請你先幫薰勳寫一筆程式判斷若干組 $A,B$ 是否會有正整數 $x,y$ 滿足 $x$&$y=A$ 且 $x$|$y=B$。

Input
$T$
$A_1$ $B_1$
$A_2$ $B_2$
$\dots$
$A_T$ $B_T$

 

  • $1\le T \le 10^5$
  • $T$ 表示有 $T$ 組 $A,B$ 需要判斷
  • $1 \le A_i,B_i \le 10^{18}(1 \le i \le T)$
  • 每組 $A,B$ 的意義如題目所述
Output
$ans_1$
$ans_2$
$ans_3$
$\dots$
$ans_T$

 

  • 輸出 $T$ 行答案,其中若第 $i$ 組 $A,B$ 會存在 $x,y$ 滿足 $x$&$y=A$ 且 $x$|$y=B$,輸出 "Yes"(不含引號),否則輸出 "No"(不含引號)。
Sample Input #1
6
2 3
5 4
8 15
10 25
16 16
15 30
Sample Output #1
Yes
No
Yes
No
Yes
No
測資資訊:
記憶體限制: 256 MB
公開 測資點#0 (5%): 1.0s , <10M
公開 測資點#1 (5%): 1.0s , <1M
公開 測資點#2 (5%): 1.0s , <10M
公開 測資點#3 (5%): 1.0s , <1M
公開 測資點#4 (5%): 1.0s , <10M
公開 測資點#5 (5%): 1.0s , <10M
公開 測資點#6 (5%): 1.0s , <10M
公開 測資點#7 (5%): 1.0s , <10M
公開 測資點#8 (5%): 1.0s , <10M
公開 測資點#9 (5%): 1.0s , <10M
公開 測資點#10 (5%): 1.0s , <10M
公開 測資點#11 (5%): 1.0s , <10M
公開 測資點#12 (5%): 1.0s , <10M
公開 測資點#13 (5%): 1.0s , <10M
公開 測資點#14 (5%): 1.0s , <10M
公開 測資點#15 (5%): 1.0s , <10M
公開 測資點#16 (5%): 1.0s , <1M
公開 測資點#17 (5%): 1.0s , <1M
公開 測資點#18 (5%): 1.0s , <10M
公開 測資點#19 (5%): 1.0s , <1M
Hint :
Tags:
bitmask 迴圈
出處:
114學年校內能競選拔 [管理者: jackhuang(fijjj) ]


ID User Problem Subject Hit Post Date
沒有發現任何「解題報告」