STLの複素数、あまり慣れてない。
https://yukicoder.me/problems/no/2976
問題
とする。
整数N・絶対値1以下の実数Xが与えられるので、
を求めよ。
解法
f(x)を複素数で因数分解すると
となる。
これをN回微分すると求める値は
なので、複素数の累乗がO(1)と仮定すると式全体の値がO(1)で求められる。
int T,N; double X; void solve() { int i,j,k,l,r,x,y; string s; cin>>T; while(T--) { cin>>N>>X; complex<double> X1(X,1),X2(X,-1); complex<double> a=pow(-1,N)*(pow(X1,-N-1)-pow(X2,-N-1))/2.0; a=a*complex<double>(0,1); a=a*pow(X*X+1,N/2.0+1); _P("%.12lf\n",a.real()); } }
まとめ
あんまり複素数のライブラリ使うことないからなぁ。