📄 3136388_ce.c
字号:
#include <stdio.h>
#include <math.h>
#define MAXN 1e14
typedef long double num;
typedef __int64 Int;
int R[100][2];
int main ()
{
Int n, t, d;
int c, k, z, i;
num x;
while (scanf ("%I64d", &n) == 1) {
assert (n > 0 && n <= MAXN + 0.5);
c = 0; z = (exp (log (3.0*n) / 3) + 3);
n *= 6;
for (k = 1; k <= z; k++) {
t = n/k; if (t*k != n) continue;
d = 6*t - 3*((Int) k*k-1); if (d <= 0) break;
x = sqrt(d); x = floor ((x+d/x+1)/2);
if (x*x != d) continue;
t = x - 3*(k-1); if (t % 6 || t <= 0) continue;
R[c][0]=t/6; R[c++][1] = k;
}
printf ("%d\n", c);
while (c--) {
printf ("%d ", k = R[c][1]);
for (i = 0; i < k; i++) printf (" %d", R[c][0] + i);
puts ("");
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -