PKU 1183 反正切函数的应用

http://poj.org/problem?id=1183
上のようにtan,arctanに関する公式が与えられる。
ここで整数aが与えられるとき、
arctan(1/a)=arctan(1/b)+arctan(1/c)を満たすような整数b,cの和の最小値を求めよという問題。

arctan(p)+arctan(q)=arctan(\frac{p+q}{1-pq})より、
arctan(\frac{1}{b})+arctan(\frac{1}{c})=arctan(\frac{\frac{1}{b}+\frac{1}{c}}{1-\frac{1}{b} * \frac{1}{c}})=arctan(\frac{1}{a})
となって、bc-ab-ac-1=0 \therefore (b-a)*(c-a)=a*a+1みたいな式が立てられる。
あとは約数を求めるような感じです。
せっかくなのでTex使ってみましたが、微妙な表示ですね。書き方が悪いんでしょうか。

main(){
  ll a;
  cin>>a;
  ll ans=LLONG_MAX-INT_MAX;
  ll A=a*a+1;
  for(ll b=1;b*b<A;++b){
    if(A%b)continue;
    ans=min(ans,2*a+b+A/b);
  }
  cout<<ans<<endl;
}