NYOJ_477A+B Problem III
来源:互联网 发布:网络ip计算器 编辑:程序博客网 时间:2024/05/18 00:58
A+B Problem III
- 输入
- T组测试数据。
每组数据中有三个实数A,B,C(-10000.0<=A,B<=10000.0,-20000.0<=C<=20000.0)
数据保证小数点后不超过4位。 - 输出
- 如果相等则输出Yes
不相等则输出No - 样例输入
3-11.1 +11.1 011 -11.25 -0.251 2 +4
- 样例输出
YesYesNo
#include<stdio.h>#include<cmath>#include<iostream>using namespace std;int main(){int n;cin>>n;while(n--){double a,b,c;cin>>a>>b>>c;if(fabs((c-(a+b))) < 0.0001)cout<<"Yes"<<endl;elsecout<<"No"<<endl;}return 0;}思路解析:
判断是否相等,数据的小数部分,不会超过四位。即允许误差在0.0001的范围内。。。
值得一提的INT_MIN的问题:
见代码:
i=-2147483648,j=2147483647, cmp1=1,cmp2=0
Press any key to continue
#include <stdio.h>#include <limits.h> int main(){ int i = INT_MIN; int j = i-1; int cmp1 = ((i-1)>0); int cmp2 = (i>1); printf("i=%d,j=%d, cmp1=%d,cmp2=%d\n",i, j, cmp1,cmp2); return 0; }输出:
i=-2147483648,j=2147483647, cmp1=1,cmp2=0
Press any key to continue
观察两个不同:
第一:“i”和“j”,我们要求"j"等于"i-1";但是结果出乎意料,他们之间的差距比1大很多。。。
原因是有负溢出产生。负溢出是指当两个负数相加时,因为溢出,使得结果为正数或者是"0";
第二:“cmp1”和"cmp2",是因为编译器把(i-1)>0优化为i>1;导致的结果不同。。。
好像知道编译器到底还做了什么事,继续关注。。。
1 0
- NYOJ_477A+B Problem III
- A+B Problem III
- A+B Problem III
- A+B Problem III
- A+B Problem III
- A+B Problem III
- A+B Problem III
- nyoj477A+B Problem III
- A+B Problem III
- A+B Problem III
- A+B Problem III
- A+B Problem III
- A+B Problem III
- A+B Problem III
- A+B Problem III
- A+B Problem III
- 477 A+B Problem III
- ACM-A+B Problem III
- qsort用法
- 作业三--归并算法
- 第四周任务
- 机器学习之基于协同过滤的推荐引擎
- HDU-1248 完全背包
- NYOJ_477A+B Problem III
- poj2402(计算第k个回文数)
- 用递归方法求解汉诺塔问题。
- 第三周排序 冒泡排序和归并排序
- C++学习:C++primer第六天
- 数据结构内存管理c++实现
- Linux中环境变量文件及配置
- IO输入和输出
- 使用EmguCV库时出现"Emgu.CV.CvInvoke的类型初始值设定项引发异常"