2011-06-18 07:37:39Morris
d873. Q465: Overflow
http://zerojudge.tw/ShowProblem?problemid=d873
內容 :
寫一個程式讀入兩個非負整數和一運算符號, 決定這兩個整數或是運算式產生的結果是否太大超出正常有號整數的範圍.(integer in Pascal, int in C)
輸入說明 :
每一列將包含一整數,一個運算子( + 或 *),和另一個整數.
輸出說明 :
對於每組輸入,先列出輸入,然後依照輸入可能會依順序印出 0-3行不同的訊息,這些訊息分別是: ``first number too big'', ``second number too big'', ``result too big''.
請參考Sample Output.
範例輸入 :
300 + 39999999999999999999999 + 11
範例輸出 :
300 + 39999999999999999999999 + 11first number too bigresult too big
提示 :
背景知識: 大數運算
出處 :
int main() {
double a, b;
int INF = 2147483647;
char op, s[2000];
while(gets(s)) {
printf("%s\n", s);
sscanf(s, "%lf %c %lf", &a, &op, &b);
if(a > INF)
puts("first number too big");
if(b > INF)
puts("second number too big");
if(op == '+' && a+b > INF)
puts("result too big");
if(op == '*' && a*b > INF)
puts("result too big");
}
return 0;
}
我上面好像講得有點小錯誤
應該說是不使用大數運算才對XD
利用字串的長度來輔助...