2010年6月18日 星期五

Problem 465 Overflow,溢出

此題就是給你兩個數,可能相乘也可能相加,請你判斷它第一個數或第二個數會不會超出 231,或者計算結果會超出 231
若第一個數超出 231,輸出 first number too big。
若第二個數超出 231,輸出 second number too big。
若第二個數超出 231,輸出 result too big。

其實這題我本來想用大數來算,但發現用 double 運算也可以,所以就用 double, C 語言程式碼如下:
while (gets(str))
{
double inf = (double)INT_MAX, n1, n2;
printf("%s\n", str);
sscanf(str, "%lf %c %lf", &n1, &ch, &n2);
if (n1 > inf) printf("first number too big\n");
if (n2 > inf) printf("second number too big\n");

if (ch == '+')
{
if (n1 + n2 > inf) printf("result too big\n");
}
if (ch == '*')
{
if (n1 * n2 > inf) printf("result too big\n");
}
}

By David.K

p465題目連結
回ACM題庫目錄
回首頁

沒有留言: