0590:Available Areas

n個の部屋の面積Sが与えられ、S=2xy+x+yが
成り立たない部屋の個数を出力する問題。

S=2xy+x+y
S-x=(2x+1)y だから
(S-x)mod(2x+1)=0 の時面積Sの部屋が作れる。

#include<iostream>
#include<cmath>

using namespace std;

bool is_room(int S){

  for(int i=1;i*i<=S;i++)
    if((S-i)%(2*i+1)==0)return true;
  return false;
}

int main(void){

  int n,S,cnt=0;

  cin >> n;
  while(n--){
    cin >> S;
    if(!is_room(S))cnt++;
  }
  cout << cnt << endl;

  return 0;
}