Aug
09
SGU 136 解题手记
2007 解题报告 Popularity: unranked
只要找出一个顶点,剩下的都可以通过不断的对称得出。设这个顶点为(x,y)。
奇数边形顶点可以求出来,通过方程2xn-2xn-1+2xn-2-...+...-x=x。
偶数边形时,方程变成了2xn-2xn-1+2xn-2-...+...+x=x,x无解或无数组解。
使用实数计算整数时,判断是否等于0直接用“==0”即可。
Submit 1: WA on 8。数组没赋初值。
Submit 2: WA on 8。看了一个标程,他数据类型用的double,我也改double试试……
Submit 3: AC。为啥一定要用double啊?题目只要求了3位有效数字啊。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <cstdio> using namespace std; int main() { int n; double x[10001]={0},y[10001]={0}; scanf("%d",&n); for (int i=1;i<=n;++i) { scanf("%lf%lf",&x[i],&y[i]); x[0]+=i&1?x[i]:-x[i]; y[0]+=i&1?y[i]:-y[i]; } if (!(n&1)) if (x[0]==0 && y[0]==0) x[0]=y[0]=0.5; else {printf("NO\n"); return 0;} printf("YES\n%.3lf %.3lf\n",x[0],y[0]); for (int i=1;i<n;++i) { x[i]=x[i]*2-x[i-1]; y[i]=y[i]*2-y[i-1]; printf("%.3lf %.3lf\n",x[i],y[i]); } return 0; } |
- http://www.briefdream.com/sgu-136/
- Tags:SGU, 几何, 数组, 方程, 浮点精度
- (0)comments | leave a reply
- Trackback URI