題目來源:http://poj.org/problem?id=2100
睡前一水 直接暴力 一頓亂搞
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
long long a[1000][2];
int main()
{
long long n;
while(~scanf("%lld",&n))
{
long long k=0;
long long sum=0;
long long j=1;
for(long long i=1; i<=sqrt(n); i++)
{
sum+=i*i;
while(sum>n)
{
sum-=j*j;
j++;
}
if(sum==n)
{
k++;
a[k][0]=i-j+1;
a[k][1]=j;
}
}
printf("%lld\n",k);
for(long long i=1; i<=k; i++)
{
printf("%lld ",a[i][0]);
for(long long x=1; x<=a[i][0]; x++)
{
printf("%lld ",a[i][1]);
a[i][1]++;
}
printf("\n");
}
}
return 0;
}