Javaって素敵やん?
私は数値計算に関しての理解が浅いので、困ったときはとりあえずJava頼みだ。(1.0-1.0/n)^(n-2)をマクローリン展開で計算することで、なんとかAcceptされた。
なんともショボいコードだが、とりあえず晒しとこう。
それにしてもややこしすぎる。全体的に結構短いコードが通っているので、もっと簡単な方法があるのだと思うが、見当もつかない。う〜んむ。
import java.util.*;
import java.math.*;
import java.text.*;class Main {
public static void main(String s[]){Scanner c=new Scanner(System.in);
double n;
while( c.hasNext() && (n=c.nextDouble())!=0.0 )
{
DecimalFormat df = new DecimalFormat("0.00000000000000");double j=1.0, xx=-1.0/n;
BigDecimal d=new BigDecimal(1.0);
BigDecimal a=new BigDecimal(n-2.0);
BigDecimal x=new BigDecimal(xx);n=n-2.0;
for(int i=2;i<22;++i){
d=d.add(a.multiply(x).divide(new BigDecimal(j),30,BigDecimal.ROUND_HALF_EVEN));
j*=i;
x=x.multiply(new BigDecimal(xx));
n=n-1.0;
a=a.multiply(new BigDecimal(n));
a=a.setScale(30,BigDecimal.ROUND_HALF_EVEN);
}
System.out.println(df.format(d.doubleValue()-5e-15));
}
}
}