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 ...
随机推荐
- Non-Maximum Suppression(非极大值抑制)
定义与介绍(NMS 以及soft-NMS也有简单的介绍): https://www.cnblogs.com/makefile/p/nms.html IoU的介绍这篇写的不错: https://oldp ...
- springboot 2.1.3.RELEASE添加filter,servlet源码学习
Servlet规范中,通过ServeltContext来注册Filter.Servlet,这里分析Filter,Servlet是相同逻辑 springboot2.0中,我们通过 FilterRegis ...
- iOS 播放系统自带铃声
播放声音代码例子 https://github.com/baitongtong/git-.git 给一个国外网址,苹果系统铃声以及自定义铃声免登陆免费下载:http://www.zedge.net/r ...
- JAVASCRIPT中装饰器是什么(装修)
装饰器是什么? 解码器是将另一段代码包装在一个代码中的简单方法. 这个概念类似于你以前听说过的功能成分和高阶成分. 这在许多情况下都被使用过,也就是说,成都装修公司简单地将一个函数包装到另一个函数中: ...
- Vue props用法详解
Vue props用法详解 组件接受的选项之一 props 是 Vue 中非常重要的一个选项.父子组件的关系可以总结为: props down, events up 父组件通过 props 向下传递数 ...
- HTTP协议复习一--认识HTTP
HTTP 是什么 HTTP 是一个在计算机世界里专门在两点之间传输文字.图片.音频.视频等超文本数据的约定和规范. HTTP 是一个用在计算机世界里的协议,它确立了一种计算机之间交流通信的规范,以及相 ...
- 5.kafka API consumer
1.kafka consumer流程1.1.在启动时或者协调节点故障转移时,消费者发送ConsumerMetadataRequest给bootstrap brokers列表中的任意一个brokers. ...
- linu学习记录--初学linux中的几个基本命令以及比较关键的man指令
import chardet chardet.detect() #传入参数可以输出查看参数的对应编码 首先是用decode将对象编码转换成unicode,然后用encode将对象编码转换成输出所需,u ...
- 【转】高性能网络编程2----TCP消息的发送
在上一篇中,我们已经建立好的TCP连接,对应着操作系统分配的1个套接字.操作TCP协议发送数据时,面对的是数据流.通常调用诸如send或者write方法来发送数据到另一台主机,那么,调用这样的方法时, ...
- LabelEncoder save 离线使用
For me the easiest way was exporting LabelEncoder as .pkl file for each column. You have to export t ...