UVA-465 Overflow
2016-07-15 21:02
453 查看
2016-07-15
题目大意:输入两个整数进行加法或乘法,判断这两个整数以及运算结果是否会大于 int 型的范围。
解题思路:输入的整数可能会很大所以用字符串读入,用三个字符串读入一行,方便输出,将 str1 与 str2 转为浮点型后判断是否大于 int 型能表示的最大值。
注意:虽然 double 也不一定能准确表示输入的数,但比起 int 已经足够。
UVA - 465 Overflow
题目大意:输入两个整数进行加法或乘法,判断这两个整数以及运算结果是否会大于 int 型的范围。解题思路:输入的整数可能会很大所以用字符串读入,用三个字符串读入一行,方便输出,将 str1 与 str2 转为浮点型后判断是否大于 int 型能表示的最大值。
注意:虽然 double 也不一定能准确表示输入的数,但比起 int 已经足够。
#include <iostream> #include <cstring> using namespace std; int Max = 2147483647; char str1[100000]; char str2[100000]; char str3[100000]; double a; double b; int main() { while ( cin >> str1 >> str2 >> str3 ) { a = 0; b = 0; for (int i = 0; i < strlen(str1); i++) a = a * 10.0 + str1[i] - '0'; for (int i = 0; i < strlen(str3); i++) b = b * 10.0 + str3[i] - '0'; cout << str1 << " " << str2 << " " << str3 << endl; if ( a > Max ) cout << "first number too big" << endl; if ( b > Max ) cout << "second number too big" << endl; if ( strcmp(str2,"+") == 0 ) if ( (a+b) > Max ) cout << "result too big" << endl; if ( strcmp(str2,"*") == 0 ) if ( (a*b) > Max ) cout << "result too big" << endl; } return 0; }
相关文章推荐
- laravel中数据库迁移
- jQuery 弹出层
- 小米手机edittext背景框显示为黑色是什么原因?
- UIButton 设置圆角 边框颜色 点击回调方法
- 【arcgis】使用ArcGIS完成空间插值——趋势面分析法
- 智能终端语音加解密
- 最常用的10个Matlab快捷键,助你编程更高效
- Codeforces 691E Xor-sequences【矩阵快速幂,好题】
- maven开发环境,写第一个HelloWorld
- 模板类的友元重载
- 关于AndroidSDK配置时的tools目录下找不到adb.exe的错误
- Hive(一)数据类型、文件格式和数据定义
- 树莓派GPIO的编号规范
- UVA-10106 Product
- 64位win中用PLSQL Developer连接64位Oracle数据库
- 机器学习算法思想简单梳理
- 关于AndroidSDK配置时的tools目录下找不到adb.exe的错误
- rom 机
- 《Testing with Xcode》第一章——QuickStart
- 得到inflater的两种方法