#P11184. 带余除法

带余除法

题目背景

注意:提交至洛谷时,请使用标准输入输出,而非文件输入输出。

NOTICE: When submitting your code on Luogu site, please use standard IO instead of file IO.

点我(或在本题底部)下载中文试题 PDF。

Click here (or at the bottom of this page) to download the English version of statements (PDF).

注意:本次比赛所有题目的大样例均为 Linux 换行符格式,在 Windows 系统内可能无法正常显示换行。

题目描述

我们已经学过带余除法。对于两个正整数 n,qn,q,如果 nn 除以 qq 的商为 kk,余数为 rr,我们可以写出带余除法算式 n÷q=krn\div q = k \cdots\cdots r,或被记为 n÷q=k(r. r)n\div q = k (\text{r. } r)。本题中,为了简化,哪怕 r=0r=0,我们也要写出这个余数。

现在有一个带余除法,然而你只知道被除数 nn​ 和商 kk​,而并不知道除数 qq​ 和余数 rr​。你想知道余数有多少种可能。

输入格式

本题有多组测试数据。输入的第一行有一个正整数 TT,表示数据组数。

之后 TT 行,每行有一个正整数 nn 和自然数 kk,分别表示带余除法的被除数和商。

输出格式

对于每组测试数据,输出一行一个自然数,表示余数的不同可能性数量。

2
10 2
1 0

2
1

参见 division/division2.in
参见 division/division2.ans

提示

【样例 1 解释】

对于第一组数据,被除数为 1010,商为 22

  • 如果除数是 1,2,31,2,3,那么商分别是 k=10,5,3k=10,5,3,不符合题意。
  • 如果除数是 44,那么商为 22,余数为 r=2r=2
  • 如果除数是 55,那么商为 22,余数为 r=0r=0
  • 如果除数是 6,7,8,9,106,7,8,9,10,那么商都是 11,不符合题意。
  • 如果除数 >10>10,那么商为 00,不符合题意。

对于第二组数据,被除数为 11,商为 00

只要除数 q>1q>1,那么 1÷q=011\div q = 0 \cdots\cdots 1 一定是正确的带余除法算式。余数只有 11 这一种可能。

【数据范围】

对于前 30%30\% 的数据,保证 1n10001\le n\le 10000k10000\le k\le 1000

另有 20%20\% 的数据,保证 k105k\le 10^5

另有 20%20\% 的数据,保证 k109k\ge 10^9

对于全体数据,保证 1T101\le T\le 101n10141\le n\le 10^{14}0k10140\le k\le 10^{14}