用比較高精度的數值型態儲存去做即可。
P.S. 如果用double型態去做,為了輸出正常,可能還是必須先用字串儲存。
C++(0.000)
/*******************************************************/
/* UVa 465 Overflow */
/* Author: Maplewing [at] knightzone.studio */
/* Version: 2016/04/28 */
/*******************************************************/
#include <iostream>
#include <cstdio>
#include <climits>
#include <string>
#include <sstream>
using namespace std;
int main(){
double a, b;
string aString, bString, op;
while( cin >> aString >> op >> bString ){
stringstream ss(aString);
ss >> a;
ss.clear();
ss.str(bString);
ss >> b;
printf("%s %s %s\n", aString.c_str(), op.c_str(), bString.c_str() );
if( a > INT_MAX ){
printf("first number too big\n");
}
if( b > INT_MAX ){
printf("second number too big\n");
}
if( (op == "+" && a + b > INT_MAX) ||
(op == "*" && a * b > INT_MAX) ){
printf("result too big\n");
}
}
return 0;
}