3985: 中山市第十二届义务教育段学生信息学邀请赛:除法运算(divide)
Description
除法运算(divide)
【问题描述】
Jimmy 开始学习除法啦! 一开始他学习了余数为 0 的除法(也就是我们常说的整除), 后来又学习了余数不为 0 的除法, 所以 Jimmy 对被除数、除数、商、余数这些概念都已经 了如指掌了。
有一天, 他忽然思考起一个问题——给一个正整数 n 作为被除数, 除数 k 可以取任意 正整数,那么会有多少互不相同的商呢?
例如: 被除数 n = 5,无论除数 k 如何变化, 商最多也只有 4 个不同的值, 分别为 0, 1, 2, 5。这是因为:
• 5 ÷ 6 = 0 . . . 5
• 5 ÷ 5 = 1 . . . 0
• 5 ÷ 4 = 1 . . . 1
• 5 ÷ 3 = 1 . . . 2
• 5 ÷ 2 = 2 . . . 1
• 5 ÷ 1 = 5 . . . 0
Jimmy 作为一个天才, 对这么简单的问题自然是手到擒来, 于是他拿着这个问题向你发 起了挑战。你能回答这个问题吗?
【输入格式】
从文件 divide.in 中读入数据。
本题输入有多组测试数据。
第一行一个整数 T,表示测试数据的组数。
接下来 T 行,每行一个整数 n,表示被除数。
【输出格式】
输出到文件 divide. out 中。
输出共 2 × T 行,对于每组测试数据输出 2 行:
第一行输出一个整数 m,表示商有 m 个不同的值;
第二行输出 m 个整数,分别表示 m 个不同的商,按从小到大的顺序输出。
Input
本题输入有多组测试数据。
第一行一个整数 T,表示测试数据的组数。
接下来 T 行,每行一个整数 n,表示被除数。
Output
输出共 2 × T 行,对于每组测试数据输出 2 行:
第一行输出一个整数 m,表示商有 m 个不同的值;
第二行输出 m 个整数,分别表示 m 个不同的商,按从小到大的顺序输出。
Sample Input Copy
2
5
11
Sample Output Copy
4
0 1 2 5
6
0 1 2 3 5 11
HINT
【测试点约束】
对于 50% 的数据,保证 1 ≤ n ≤ 105。
对于 100% 的数据,保证 1 ≤ T ≤ 10 ,1 ≤ n ≤ 109。