HDU-盐水的故事
http://acm.hdu.edu.cn/showproblem.php?pid=1408
这是一道高精度问题:
在自己错了数十遍之后找到了不少规律:
首先是Output limit exceeded:之前一直不知道是什么意思,现在才知道是输入输出的精度有问题
/* */
# include <bits/stdc++.h>
using namespace std; int main()
{
long long int VUL, D, i, t, f;
while( ~ scanf("%lld %lld", &VUL, &D) )
{
t=;
for( i=; ; i++ )
{
f = i*D;
if( VUL>f )
{
t += i;
t += ;
}
else if( VUL==f )
{
t += i;
break;
}
else
{
if( VUL%D== )
{
t += VUL/D;
break;
}
else
{
t += VUL/D+;
break;
}
}
VUL = VUL - i * D;
}
printf("%lld\n", t);
}
return ;
}
然后就是中间代码的精度问题了:
记住比较大小时,double类型跟double类型的比,int类型跟int类型的比,double要是跟int类型的比会有精度缺失
以下是AC代码:
/* */
# include <bits/stdc++.h>
using namespace std; int main()
{
long long int i, t;
double VUL, D, f;
while( ~ scanf("%lf %lf", &VUL, &D) )
{
t=;
for( i=; ; i++ )
{
int p = (int)(VUL/D);///double 类型求余数
double r = VUL - p * D;///double 类型求余数
f = i*D*1.0;
if( VUL>f )
{
t += i;
t += ;
}
else if( VUL==f )
{
t += i;
break;
}
else if( r>=0.000001 )///不能跟0比,(即不能用r>0来判)
{
t += p+;
break;
}
else
{
t += p;
break;
}
VUL = VUL - f;
}
printf("%lld\n", t);
}
return ;
}
注意观察以下WA代码和上面的AC代码:可以发现(r==0.000000)是错误的,是不是0.000000==0呀,它也是int类型的?(欢迎大佬评论)
/* */
# include <bits/stdc++.h>
using namespace std; int main()
{
long long int i, t;
double VUL, D, f;
while( ~ scanf("%lf %lf", &VUL, &D) )
{
t=;
for( i=; ; i++ )
{
int p = (int)(VUL/D);
double r = VUL - p * D;
f = i*D*1.0;
if( VUL>f )
{
t += i;
t += ;
}
else if( VUL==f )
{
t += i;
break;
}
else if( r==0.000000 )
{
t += p;
break;
}
else
{
t += p+;
break;
}
VUL = VUL - f;
}
printf("%lld\n", t);
}
return ;
}
PS.另一种AC代码:
#include<stdio.h>
int main()
{
double v,d;
long long int t;
while(scanf("%lf%lf",&v,&d)!=EOF)
{
int i;
t=;
for(i=;; i++)
{
if(v-i*d<=)
{
while(v>0.0000001)/*v与0比较的话就WA了,因为d可能很小很小,而d无论多小,v只要剩下就得算*/
{
v=v-d;
t++;
}
break;
}
v=v-i*d;
t=t+i;
t++; }
printf("%lld\n",t);
}
return ;
}
HDU-盐水的故事的更多相关文章
- C题 hdu 1408 盐水的故事
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1408 盐水的故事 Time Limit: 2000/1000 MS (Java/Others) ...
- 盐水的故事[HDU1408]
盐水的故事Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissio ...
- 盐水的故事(hdu1408)
盐水的故事 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 题解报告:hdu 1408 盐水的故事
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1408 Problem Description 挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下:然后 ...
- HDU 1408 盐水的故事 数学水题
http://acm.hdu.edu.cn/showproblem.php?pid=1408 题目: 挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下:然后滴二滴,停一下:再滴三滴,停一下...,现 ...
- HDOJ(HDU) 1408 盐水的故事
Problem Description 挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下:然后滴二滴,停一下:再滴三滴,停一下-,现在有一个问题:这瓶盐水一共有VUL毫升,每一滴是D毫升,每一滴的速 ...
- hdu 1408 盐水的故事
Problem Description 挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下:然后滴二滴,停一下:再滴三滴,停一下...,现在有一个问题:这瓶盐水一共有VUL毫升,每一滴是D毫升,每一滴 ...
- 6J - 盐水的故事
挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下:然后滴二滴,停一下:再滴三滴,停一下...,现在有一个问题:这瓶盐水一共有VUL毫升,每一滴是D毫升,每一滴的速度是一秒(假设最后一滴不到D毫升,则 ...
- HDU1408 - 盐水的故事
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1408 解题思路:主要考虑最后一滴可能不满足D毫升,但仍算1秒.另外还要注意浮点数的比较. #inclu ...
- 【HDOJ】1408 盐水的故事
简单题,感觉非常简单,像小学奥数的植树问题. #include <stdio.h> #include <math.h> #define MAXNUM 5001 int main ...
随机推荐
- Mysql之锁的基本介绍
数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则.对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外.MySQL数据 ...
- git push proxy 取消不掉 can not prox....
使用这个折腾了半天 git config --global --unset http.proxy git config --global --unset https.proxy 没用,原来实现项目目录 ...
- usercript and passwdcript array
usercript and passwdcript array ######################## # nsnet_usercript # xxd -g 4 -c 16 -s +$(( ...
- 并发编程-线程-死锁现象-GIL全局锁-线程池
一堆锁 死锁现象 (重点) 死锁指的是某个资源被占用后,一直得不到释放,导致其他需要这个资源的线程进入阻塞状态. 产生死锁的情况 对同一把互斥锁加了多次 一个共享资源,要访问必须同时具备多把锁,但是这 ...
- mysql 的使用
1. 安装 https://dev.mysql.com/downloads/mysql/ 2. 配置 $ vim ~/.bash_profile $ export PATH=$PATH:/usr/lo ...
- 那些年伴我一起成长的SAP装备
今天这篇文章无关技术,我们来聊聊SAP装备,即打上了SAP logo的那些物品. 但凡在SAP圈子工作过一段时间的从业者们,手上或多或少都拥有一些此类装备.Jerry当然也不例外,这些装备无论物品本身 ...
- 【转】DATA_SECTION 和CODE_SECTION 的区别
请问#pragma DATA_ALIGN有什么作用? 下面是我在EDMA的一个例程中摘录的几句话:#pragma DATA_ALIGN(ping,128);#pragma DATA_ALIGN(pon ...
- PHP开发工具 zend studio
一.搭建PHP开发环境Apahce服务器Dreamwear创建站点 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/ ...
- mysql 优化修复表
OPTIMIZE TABLE `table_name` 优化表 MyISAM 引擎清理碎片 OPTIMIZE语法: OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABL ...
- 使用Junit测试框架学习Java
前言 在日常的开发中,离不开单元测试,而且在学习Java时,特别是在测试不同API使用时要不停的写main方法,显得很繁琐,所以这里介绍使用Junit学习Java的方法.此外,我使用log4j将结果输 ...