#685. csp-j-2024复赛模拟题P1带余除法

csp-j-2024复赛模拟题P1带余除法

P1 带余除法

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

题目描述

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

现在有一个带余除法,然而你只知道被除数 n​n​ 和商 k​k​,而并不知道除数 q​q​ 和余数 r​r​。你想知道余数有多少种可能。

输入格式

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

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

输出格式

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

输入输出样例 #1

输入 #1

2
10 2
1 0

输出 #1

2
1

输入输出样例 #2

输入 #2

参见 division/division2.in

输出 #2

参见 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=0⋯⋯11\div q = 0 \cdots\cdots 1 一定是正确的带余除法算式。余数只有 11 这一种可能。

【数据范围】

对于前 30%30\% 的数据,保证 1≤n≤10001\le n\le 1000,0≤k≤10000\le k\le 1000。

另有 20%20\% 的数据,保证 k≤105k\le 10^5。

另有 20%20\% 的数据,保证 k≥109k\ge 10^9。

对于全体数据,保证 1≤T≤101\le T\le 10,1≤n≤10141\le n\le 10^{14},0≤k≤10140\le k\le 10^{14}。