poj 2100 Graveyard Design
直接枚举就行了
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<iostream> #include<stdio.h> #include<algorithm> #include<iomanip> #include<cmath> #include<cstring> #include<vector> #define ll __int64 #define pi acos(-1.0) #define SIZE 1024 using namespace std; const int mod =1000000007; vector<ll>p; int main(){ ll i,j,t; ll n,sum,num; while(cin>>n){ p.clear(); i=j=1; sum=0; num=(ll)sqrt(n*1.0); while(j<=num){ sum+=j*j; if(sum>=n){ while(sum>n){ sum-=i*i; i++; } if(sum==n){ p.push_back(i); p.push_back(j); } } j++; } cout<<p.size()/2<<endl; for(i=0;i<p.size();i+=2){ cout<<p[i+1]-p[i]+1; for(j=p[i];j<=p[i+1];j++){ cout<<' '<<j; } cout<<endl; } } return 0; }