PKU JudgeOnline 2959 -- Ball bearings
naoki氏が取り組んだみたいなのでちゃんと縮めて晒してみる。
直径Dの円に、直径dの円をできるだけたくさん内接させたい。直径dの円同士の間は距離s以上離れていなければならない。このとき直径dの円は最大いくつ内接させられるかを求める問題。
GCC102B。
main(a){ float D,d,s; for(gets(&a);~scanf("%f%f%f",&D,&d,&s); printf("%d\n",a=3.1416/asin(s/=D-d))) s+=d; }
最初acos(1-s*s*2)とか使ってて、asin()で書けることに後から気付いた。
円周率はこれ以上縮めたらWAみたい。
あと、gets(&a)は初めて使ったわー。