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 ...
随机推荐
- spring boot 中@Autowired注解无法自动注入的错误
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/huihuilovei/article/de ...
- Java线程读写锁
排他锁和共享锁: 读写锁:既是排他锁,又是共享锁.读锁,共享锁,写锁:排他锁 读和读是不互斥的 import java.util.HashMap; import java.util.Map; impo ...
- Oracle 11g安装过程工作Oracle数据库安装图解
一.Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可. 路径名称中,最好不要出现中文,也不要出现空格等不规则字符. 官方下地址: oracle.com/tec ...
- 2.7_Database Interface OLE-DB诞生
ODBC仅支持关系数据库,以及传统的数据库类型,并且只以C/C++语言API(API就是一些C语言的代码,是最底层的程序,在windows中就是一些.dll的文件)形式提供服务,因而无法符合日渐复杂的 ...
- SQL递归获取树型路径中文名称
项目中遇到一个树型结构表要根据任意传入节点获取它从根节点一直到自身节点的全部路径的中文名称,并且用'>'与分隔. 我使用在sqlServer中写了一个解析函数方便开发调用. USE [RP_ER ...
- Java文件字符流
1.字符编码(Character encoding)和编码集(Character set) 字符编码(Character encoding)是将字符转为字节或字节数组的过程. 字符集(Characte ...
- 网络编程-tcp三次握手和四次挥手
TCP三次握手和四次挥手过程 1.三次握手 (1)三次握手的详述 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向 ...
- php ajax生成excel并下载
目标:使用php,通过ajax请求的方式生成一个excel,然后下载. 思路:大致思路是发送一个ajax请求到后台,后台php处理后生成一个excel文件,然后把生成的文件放到一个临时目录,然后把文件 ...
- JAVA - Windows下JDK默认安装的配置参数
JDK版本1.8 JAVA_HOME C:\Program Files\Java\jdk1.8.0_60 CLASSPATH .;%%JAVA_HOME%%\lib;%%JAVA_HOME%%\lib ...
- Spark运行原理【史上最详细】
https://blog.csdn.net/lovechendongxing/article/details/81746988 Spark应用程序以进程集合为单位在分布式集群上运行,通过driver程 ...