码迷,mamicode.com
首页 > 其他好文 > 详细

Graveyard LA3708

时间:2018-10-27 14:50:34      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:四舍五入   思维   names   div   证明   移动   ret   color   固定   

白书第一章例题4

思维。

先固定一点不动,假设最后一共N个点,那么编号为0,1...N-1,

0不动,原来的n个点分别占据i/n*N的位置(记为pos),移动到pos四舍五入的位置即可。

证明一:有一个坐标未移动,见例题3UVA11300

证明二:没有点移动到相同位置。

假设xy移动到相同位置,那么他们的pos四舍五入相同,最多差0.9999,小于1.但是根据我们的做法,移动前坐标相差大于一,故不可能。

 

#include<cstdio>
#include<cmath>
using namespace std;

int main ()
{
    int n ,m;
    double Ans;
    while(~scanf("%d %d" ,&n ,&m))
    {
        Ans = 0;
        for(int i = 1 ;i < n ;i ++)
        {
           double pos = i * 1.0 / n * (n + m);
           double now = abs(pos - int(pos + 0.5)) / (n + m);
           Ans += now;
        }
        printf("%.4lf\n" ,Ans * 10000);
    }
    return 0;
}

 

Graveyard LA3708

标签:四舍五入   思维   names   div   证明   移动   ret   color   固定   

原文地址:https://www.cnblogs.com/lqerio/p/9860922.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!