カメヲラボ

主にプログラミングとお勉強全般について書いてます

Beavergnaw(1)

  • おしえて!79B

式が決まったところで、早速コードを書いてみる。

main(D,V){
  for(;scanf("%d%d",&D,&V),D;)
    printf("%.3f\n",cbrt(D*D*D-6/3.141592*V));
}

ここから精度を考えて縮めてゆくわけだが、どうやら私のコードだけ同じ79バイトでも他の人たちと違うようだ。私のコードは、6/πの逆数π/6のsinが1/2になることを利用して、

main(D,V){
  for(;scanf("%d%d",&D,&V),D;)
    printf("%.3f\n",cbrt(D*D*D-V/asin(.5)));
}

精度は十分。しかしasin()を使うとメモリ消費が大きくなってしまう。asinを使わずに、定数で切り抜けられるんだろうか・・・。