poj 2100 Graveyard Design

直接枚举就行了

 

#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;

}
View Code

 

 

 

你可能感兴趣的:(design)