3985: 中山市第十二届义务教育段学生信息学邀请赛:除法运算(divide)

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:58 Solved:7

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。