poj-2100 Graveyard Design

呂振麒 bio photo By 呂振麒 Comment

傳送門:

Graveyard Design

題意:

多少組連續的平方和等於N。

思路:

雙指針爬過去邊維護目前答案即可(也可以先找出全部的前綴和)

code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
void init(){
  ans.clear();
  cnt = 1;
}

void sol(){
  ll f1 = 1, f2 = 1;
  while(f2*f2 <= N){
    while(f1+1<=f2 && cnt > N){
      cnt -= (f1*f1);
      ++f1;
    }
    if(cnt == N) ans.PB(MP(f1,f2));
    ++f2;
    cnt += (f2*f2);
  }
  cout << ans.size() << endl;
  for(int i=0;i<ans.size();i++){
    cout << ans[i].Y-ans[i].X+1 ;
    for(int j=ans[i].X;j<=ans[i].Y;j++)
      cout << " " << j;
    cout << endl;
  }
}

int main(){
  while(cin>>N){
    init();
    sol();
  }
}
comments powered by Disqus