PKU 1183 反正切函数的应用
http://poj.org/problem?id=1183
上のようにtan,arctanに関する公式が与えられる。
ここで整数aが与えられるとき、
arctan(1/a)=arctan(1/b)+arctan(1/c)を満たすような整数b,cの和の最小値を求めよという問題。
より、
となって、みたいな式が立てられる。
あとは約数を求めるような感じです。
せっかくなので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; }