题意
请参考LRJ白书第一章例题4.
思路
大概是构造题。
跟白书不太一样的解法,贪心地把两种方案的一个顶点对在一起,然后逐个检查,取两种方案的最小角度差,加在一起,就是答案。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#include <iostream> #include <algorithm> #include <queue> #include <vector> #include <cstdlib> #include <cstdio> #include <string> #include <cstring> #include <ctime> #include <iomanip> #include <cmath> #include <set> #include <stack> #include <cmath> #include <map> #include <complex> using namespace std; int main(){ double a,b; while(scanf(" %lf %lf",&a,&b) != EOF){ double sumdeg = 0; for(int i = 0; i <= a; i++){ double deg = 360.0*(double)i/a; while(deg > 360.0/(a+b)){ deg -= 360.0/(a+b); } sumdeg += min(deg,abs(360.0/(a+b)-deg)); } double ans = sumdeg*10000.0/360.0; printf("%.4lf\n",ans); } return 0; } |