Z君的日常之海绵宝宝

时间限制: 1000 ms 内存限制: 65536 kb
总通过人数: 0 总提交人数: 0

题目描述

Z君无聊的时候喜欢看《海绵宝宝》,但他不满足于此,他还想自己做一些海绵宝宝。大家都知道海绵宝宝是个正方形状的,所以Z君购买了一张 n * m ( n , m 均为正整数)的大矩形海绵块,然后从中切割出来他想要的大小的海绵宝宝。虽然Z君的数学水平还停留在中学,但他还是很轻松的算出来了凭借这张海绵块,他可以做出来 x 种海绵宝宝。(两块海绵宝宝当且仅当边长相等,且是从同一块海绵块中相同位置切割出来的时是相同种类的)

那么请问海绵块的两相邻边取哪些值的时候,Z君从这个海绵块中最多能得到 x 种海绵宝宝?

输入

只有一组数据,为一个整数 x (1 ≤ x ≤ 10^18)。

输出

首先输出一个整数 k ,表示这样海绵块的种类。(海绵块当且仅当两相邻边长度分别对应相等时为相同种类)

接下来 k 行,每行为两个整数 n , m。按照 n 的升序输出,如果 n 相同则再按 m 升序输出。

输入样例一

26

输出样例一

6
1 26
2 9
3 5
5 3
9 2
26 1

输入样例二

2

输出样例二

2
1 2
2 1

解释

对于一个 2 x 3 的海绵块,我们可以得到 6 个 1 x 1 大小的海绵宝宝和 2 个 2 x 2大小的海绵宝宝,所以一共能得到 8 种海绵宝宝。如图:

对于样例一的 3 * 5 的答案:边长为 1 时,有 15 种;边长为 2 时,有 8 种;边长为 3 时,有 3 种。 所以15 + 8 + 3 = 26。

相关推荐