#T557852. 带余数除法(b和q已知)

带余数除法(b和q已知)

题目描述

带余数除法:对于两个正整数b, a,如果b除以a的商为q,余数为r,我们可以写出带余数除法算式,b÷a = q……r。本题中,哪怕r=0,也要写出这个余数。

现在有一个带余数除法,然而你只知道被除数b和商q,0≤q≤10^9,0<b≤10^9,q≤b,不知道除数a和余数r。那么除数a和余数r,有多少种不同的取值组合?余数r取值总和是多少?

输入格式

本题有多组测试数据。输入的第一行为一个正整数T,表示数据组数。然后有T行,每行有一个正整数b和自然数q,分别表示带余数除法的被除数和商。

输出格式

对每组测试数据,输出一行,为两个整数,用一个空格隔开,分别表示余数的不同取值数量和余数所有可能取值的和。

输入输出样例 #1

输入 #1

2
10 2
1 0

输出 #1

2 2
1 1

输入输出样例 #2

输入 #2

10
447 0
22 1
21 1
23 1
319 11
318 11
320 11
493 29
492 29
494 29

输出 #2

1 447
11 55
11 55
12 66
3 33
2 31
3 36
1 0
0 0
1 1

说明/提示

数据规模与约定

对于前30%的数据,保证1≤b≤1000,0≤q≤1000。

另有20%的数据,保证q≤10510^5

对于全体数据,保证1≤T≤10,0≤q≤b≤10910^9

样例1解释

对于第一组数据,被除数为10,商为2。

如果除数是1, 2, 3,那么商分别是k = 10, 5, 3,不符合题意。

如果除数是4,那么商为2,余数为r = 2。

如果除数是5,那么商为2,余数为r = 0。

如果除数是6, 7, 8, 9, 10,那么商都是1,不符合题意。

如果除数>10,那么商为0,不符合题意。

对于第二组数据,被除数为1,商为0。

只要除数a>1,那么1÷a=0⋯⋯1一定是正确的带余除法算式。余数只有1这一种可能。

本题出处

本题源自以下教材的编程习题:王桂平, 周思益, 周迎川著. C++编程与信息学竞赛数学基础, 北京大学出版社, 2025年7月出版.