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

提示 :

背景知識: 大數運算

出處 :

ACM 465 (管理:taichunmin)



#include<stdio.h>
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;
}
和風信使 2011-06-18 10:58:57

我上面好像講得有點小錯誤
應該說是不使用大數運算才對XD

利用字串的長度來輔助...

和風信使 2011-06-18 10:56:35

忽然發現這題就是我出的 哈

一直在想這題能不能用偷懶寫法
也就只有用到long long的話XD

(我沒自己試過就是了)

和風信使 2011-06-18 10:40:10

一起來用JAVA的BigInt型態吧XDD