UVa 465 Overflow (比較大小難道不應該用double嗎)
阿新 • • 發佈:2019-02-13
465 - Overflow
Time limit: 3.000 seconds
Write a program that reads an expression consisting of two non-negative integer and an operator. Determine if either integer or the result of the expression is too large to be represented as a ``normal'' signed integer (type integer if you are working Pascal, type int
Input
An unspecified number of lines. Each line will contain an integer, one of the two operators + or *, and another integer.
Output
For each line of input, print the input followed by 0-3 lines containing as many of these three messages as are appropriate: ``first number too big
Sample Input
300 + 3 9999999999999999999999 + 11
Sample Output
300 + 3 9999999999999999999999 + 11 first number too big result too big
如標題所述。
完整程式碼:
/*0.019s*/ #include<cstdio> const double maxint = -1u >> 1; char str[600]; int main() { double a, b; char op; while (gets(str)) { puts(str); sscanf(str, "%lf %c %lf", &a, &op, &b); if (a > maxint) puts("first number too big"); if (b > maxint) puts("second number too big"); if (op == '+' && a + b > maxint || op == '*' && a * b > maxint) puts("result too big"); } return 0; }