UVa 465 - Overflow 解题报告
2014-01-30 10:18
441 查看
高精度运算和比较,常规做法就是用高精度的方法进行加法和乘法,但是比较麻烦,如果用刘汝佳的bign类也是比较简单。在网上看到别人想到的用atof转化为浮点数直接比较,秒杀这道题。也是抓住这道题测试数据没有超过double的范围的漏洞吧。
以下是用atof的做法
ps.
float的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;
double的范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308。
int最大值为INT_MAX(定义在<climits>),为2147483647,即0x7fffffff.
以下是用atof的做法
#include <cstdio> #include <cstdlib> #include <climits> char num1[300],num2[300]; int main() { char c; while (scanf("%s %c %s", num1, &c, num2) != EOF) { printf("%s %c %s\n", num1, c, num2); double a = atof(num1); double b = atof(num2); if (a > INT_MAX) printf("first number too big\n"); if (b > INT_MAX) printf("second number too big\n"); if (c == '+' && a+b > INT_MAX) printf("result too big\n"); if (c == '*' && a*b > INT_MAX) printf("result too big\n"); } }
float的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;
double的范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308。
int最大值为INT_MAX(定义在<climits>),为2147483647,即0x7fffffff.
相关文章推荐
- UVA1625 颜色的长度(color length)(重庆一中高2018级信息学竞赛测验10) 解题报告
- UVA - 465 Overflow
- acm-uva11352解题报告
- UVA 12535 Probability Through Experiments 解题报告
- Uva 1393 - Highways 解题报告(递推)
- uva 401 Palindromes 解题报告
- UVA 465 (暑假-高精度 -B - Overflow)
- UVA 10494 解题报告
- {UVA}UVA-489解题报告
- uva465 - Overflow
- [UVA10181]十五数码解题报告
- UVA10456 解题报告
- [UVA10270]拼接正方形解题报告
- uva490解题报告
- UVALive 6044 Unique Path 解题报告
- UVA 465 - Overflow (浮点数的优势)
- UVA - 465 Overflow
- 【解题报告】uva357_Let Me Count The Ways(让我来数数方案, dp, 完全背包)
- UVA409 Excuses, Excuses!解题报告
- UVa 442 - Matrix Chain Multiplication解题报告