月光女神是创界山最美的守护神。暗黑达垂涎女神的美色。不择手段想要得到女神的芳心!月光女神不堪其扰。干脆设立了一个结界。只有拥有大智慧的人才能通过结界去见女神一面。暗黑达虽然力量强大无比,但脑子不好使,他一直也没能见到女神。现在你能帮小渡见到女神么?
结界给出一个数n。你要求一段连续的数,这些数的平方和等于n。
Input
输入一个整数n,1<=n<=10^14;
Output
输出一个数k,k为解的个数。接下来的k行为解,每一行的解要先输出这个解中包含的数字个数,然后从小到大输出解中包含的数字。解的输出顺序要按照所包含的数字个数降序排列。
Sample Input
2030
Sample Output
2 4 21 22 23 24 3 25 26 27
满足2030的解有2个 第一个解包含4个数 分别是 21 22 23 24。21^2+22^2+23^2+24^2=2030。
第二个解包含3个数 分别是 25 26 27。25^2+26^2+27^2=2030。
#include<iostream>
using namespace std;
int main(){
long long int n,sum;
cin>>n;
int t=0;
int a[2000],b[20000];
int p=0;
sum=0;
long long int i=1,j=0;
while(1){
while(sum<n){
j++;
sum+=j*j;
}
if(i*i>n)
break;
if(sum==n){
t++;
a[p]=i;
b[p]=j;
p++;
}
sum-=i*i;
i++;
}
cout<<t<<endl;
for (long long int i=0;i<t;i++){
cout<<b[i]-a[i]+1;
for (long long int j=a[i];j<=b[i];j++){
cout<<" "<<j;
}
cout<<endl;
}
return 0;
}