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