题目链接:http://codeforces.com/contest/404/problem/B?csrf_token=6292hf3e1h4g5e0d16a996ge6bgcg7g2

解题报告:一个正方形的跑道,边长是a,然后教练给运动员一个规定,每跑d米就额外补充一次饮料,然后输入一个n,表示一共将补充n次,比赛的出发点是(0,0),

也就是左下角的那个点,然后让你求出每次补充饮料的坐标。

本来看起来应该挺简单的一个模拟题,结果没想到一波三折,哎,技术问题啊。首先要注意的就是它规定的是精确到小数点后的四位,所以我在处理的时候,先把输入

全部乘以10000然后转化成整数来处理,这样就可以把小数点后四位以下都忽略掉,然后在输出的时候再转化一下就可以了,这样的想法是对的,但是我首先就犯了一个错误就是这题本来规定的数据范围是10^5,但是我做了乘10000处理,所以数据范围就到了10^9级别,所以int显然是不够的,一开始是这样错的,然后发现了又改过来了,

但是没想到改过来了还是错的,没办法,只好去看测试数据了,结果发现我的第7组测试数据的第6个数比正确的结果大了1,然后果断把那组数据在我本地测试了一下,

结果很纠结,97591.0354  一转化,就像见鬼了一样,转化整数后就成了975910353,怪不得会有个1的差距了,然后我左改又改,就像见鬼了一样,就是有个1的损失,

这时候我才意识到精度损失了,可是怎么解决呢,想起来以前用过一种+0.000001来防止精度损失的办法,果然改过之后就AC 了,哎,虽然这题没A ,但通过这次的教训,我希望可以记住下次碰到这种精度要求较高的题时切记要注意精度的问题了。哦,对了,还有一个,CF规定一定要用__int64,不能出现long long 以及类似的类型。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef __int64 INT; int main()
{
double c,e;
INT n;
while(scanf("%lf%lf",&c,&e)!=EOF)
{
scanf("%I64d",&n);
c *= 10000.0;
e *= 10000.0;
c += 0.000001;
e += 0.000001;
INT a = (INT)c;
INT d = (INT)e;
for(int i = ;i <= n;++i)
{
INT race = i * d;
race %= (*a);
double x,y;
if(race >= && race <= a)
{
x = (double)race / 10000.0;
y = ;
}
else if(race > a && race <= *a)
{
race -= a;
x = (double)a / 10000.0;
y = (double)race / 10000.0;
}
else if(race > *a && race <= *a)
{
race -= (*a);
race = a - race;
x = (double)race / 10000.0;
y = (double)a / 10000.0;
}
else if(race > *a && race <*a)
{
race -= (*a);
race = a - race;
x = ;
y = (double)race / 10000.0;
}
printf("%.10lf %.10lf\n",x,y);
} }
return ;
}

Codeforces 237 div2 B. Marathon(关于精度损失的教训)的更多相关文章

  1. 玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)

    前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + ...

  2. Java中关于 BigDecimal 的一个导致double精度损失的"bug"

    背景 在博客 恶心的0.5四舍五入问题 一文中看到一个关于 0.5 不能正确的四舍五入的问题.主要说的是 double 转换到 BigDecimal 后,进行四舍五入得不到正确的结果: public ...

  3. java操作Excel处理数字类型的精度损失问题验证

    java操作Excel处理数字类型的精度损失问题验证: 场景: CELL_TYPE_NUMERIC-->CELL_TYPE_STRING--->CELL_TYPE_NUMERIC POI版 ...

  4. Codeforces #180 div2 C Parity Game

    // Codeforces #180 div2 C Parity Game // // 这个问题的意思被摄物体没有解释 // // 这个主题是如此的狠一点(对我来说,),不多说了这 // // 解决问 ...

  5. (Jquery)避免数据相加小数点后产生多位数和计算精度损失

    /** * 加法运算,避免数据相加小数点后产生多位数和计算精度损失. * * @param num1加数1 | num2加数2 */ function numAdd(num1, num2) { var ...

  6. JAVA浮点数计算精度损失底层原理与解决方案

    浮点数会有精度损失这个在上大学的时候就已经被告知,但是至今完全没有想明白其中的原由,老师讲的时候也是一笔带过的,自己也没有好好琢磨.终于在工作的时候碰到了,于是google了一番. 问题: 对两个do ...

  7. Codeforces #541 (Div2) - E. String Multiplication(动态规划)

    Problem   Codeforces #541 (Div2) - E. String Multiplication Time Limit: 2000 mSec Problem Descriptio ...

  8. Codeforces #541 (Div2) - F. Asya And Kittens(并查集+链表)

    Problem   Codeforces #541 (Div2) - F. Asya And Kittens Time Limit: 2000 mSec Problem Description Inp ...

  9. Codeforces #541 (Div2) - D. Gourmet choice(拓扑排序+并查集)

    Problem   Codeforces #541 (Div2) - D. Gourmet choice Time Limit: 2000 mSec Problem Description Input ...

随机推荐

  1. dubbo底层之Netty

    背景 Java线程:由开始的单线程,到通过new Thread()创建的多线程,再到现如今的线程池,Java多线程编程的效率和性能有了很大的提升 Reactor模型:基于事件驱动,适合处理海量I/O事 ...

  2. BugPhobia开发篇章:Beta阶段第V次Scrum Meeting

    0x01 :Scrum Meeting基本摘要 Beta阶段第五次Scrum Meeting 敏捷开发起始时间 2015/12/17 00:00 A.M. 敏捷开发终止时间 2015/12/17 23 ...

  3. linux 常用命令-ps(process state)

    ps -ef | grep 端口号:查看某个端口的占用情况 ps -tunlp | grep 端口号:查看占用端口的进程名称

  4. 第一个Sprint计划

    时间:5月22-28日 (6天) 人员:杜殷浩(界面设计) 何广强(界面美化) 目标:将基本框架设计好,实现好.

  5. 第二个spring冲刺总结

    讨论成员:罗凯旋.罗林杰.吴伟锋.黎文衷 第二阶段总体是做到了四则运算的demo,,包括APP进入动画,以及界面的基本效果设计,还有能进行综合计算(选择题,可以 自动生成简单,容易,困难 三种难度  ...

  6. week8:个人博客作业

    团队作业(5) 要求 在PM 带领下, 每个团队深入分析下面行业的App, 找到行业的Top 5 (从下面的三个备选中,任选一个行业即可) 英语学习/词典App 笔记App 旅游行业的手机App 选择 ...

  7. CentOS75 安装 telnet 进行使用.

    1. 安装必须要的服务 yum install xinetd telnet telnet-server 2. 修改增加root用户登录权限 vi /etc/securetty 在最后面增加两行 pts ...

  8. C++中关键字explicit的作用

    C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色. 1 是个构造器 ,2 是个默认且隐含的类型转换操作符. 所以, 有时候在我们写下如 AAA ...

  9. Thinkphp中import的几个用法详细介绍

    下面附上import的几个用法介绍 1.用法一 import('@.Test.Translate');@,表示项目根目录.假定根目录是:App/导入类库的路径是:App/Lib/Test/Transl ...

  10. 学习构建一个简单的wcf服务

    入门,构建第一个WCF程序 1.服务端 建立一个控制台应用程序作为Server,新建一个接口IData作为服务契约.这个契约接口一会儿也要放到Client端,这样双方才能遵循相同的标准.别忘了添加对 ...