# 题解：HDU6641 TDL

### Problem Description

For a positive integer $n$, let’s denote function $f(n,m)$ as the $m$-th smallest integer $x$ that $x>n$ and $\mathrm{gcd}(x,n)=1$. For example, $f(5,1)=6$ and $f(5,5)=11$.

You are given the value of $m$ and $(f(n,m)−n)\oplus n$, where $\oplus$ denotes the bitwise XOR operation. Please write a program to find the smallest positive integer $n$ that $(f(n,m)−n)\oplus n=k$, or determine (whether) it is impossible.

### Input

The first line of the input contains an integer $T$($1 \leq T \leq 10$), denoting the number of test cases.

In each test case, there are two integers $k,m$($1 \leq k\leq 10^{18}$,$1\leq m\leq100$).

### Output

For each test case, print a single line containing an integer, denoting the smallest $n$. If there is no solution, output $-1$ instead.

## 题意 & 题解

$$N = P_1^{a_{1}}P_2^{a_{2}}P_3^{a_{3}} \cdots P_n^{a_{n}}=\prod_{i=1}^nP_i^{a_i}$$

$$K = (a_1+1)(a_2+1)(a_3+1)\cdots(a_k+1)=\prod_{i=1}^n(a_i+1)$$

## AC代码

### 评论

ACM Front-end Learning Note Programming Solution