#P10565. [ICPC 2024 Xi'an I] Chained Lights

[ICPC 2024 Xi'an I] Chained Lights

Description

你有 nn 盏灯排成一行。最初,它们都是关闭的。 你将逐个按下这 nn 盏灯。当你按下灯 ii 时,灯 ii 将切换其状态,这意味着如果它是关闭的,它将打开;如果它是打开的,它将关闭。然后对于每个满足 ij,i<jni|j, i < j \le njj,按下灯 jj 一次。 例如,如果 n=4n=4,当你按下灯 11 时,灯 11 将打开,然后你将按下灯 2,3,42,3,4。由于你按下了灯 22,灯 22 将打开,你将按下灯 44,这将导致灯 44 打开。经过所有操作后,灯 1,2,31,2,3 将打开,而灯 44 仍然关闭。 你将逐个按下这 nn 盏灯并进行上述操作。经过所有操作后,你想知道灯 kk 是开着还是关着的。 你也可以使用以下代码来理解问题的含义:

void press(int x) {
    light[x]^=1;
    for (int y=x+x; y<=n; y+=x) press(y);
}
for (int i=1; i<=n; i++) press(i);

Input Format

有多个测试用例。 第一行包含一个整数 T(1T105)T(1 \le T \le 10^5),表示测试用例的数量。 每个测试用例包含两个整数 n,k(1kn106)n, k(1 \le k \le n \le 10^6),在一行中。

Output Format

对于每个测试用例,如果灯 kk 最终是打开的,输出 YES,否则输出 NO

2
1 1
3 2
YES
NO

Hint

(由 ChatGPT 4o 翻译)