promotion image of download ymail app
Promoted
kent 發問時間: 電腦與網際網路程式設計 · 6 年前

高中程式解題系統c004: Beat the Spread!

如題。

希望有人提供C語言的解答。

以下為個人的答案,但會出現「WA」

WA (line:4)

答案不正確

您的答案為: 50 49

正確答案為: impossible

--------------------------------------------------------------------------------

#include <stdio.h>

int main(){

int n,i,a,b;

scanf("%d",&n);

for(i=1;i<=n;i++)

{

scanf("%d %d",&a,&b);

if(a>=b)

printf("%d %d\n",(a+b)/2,(a-b)/2);

else

printf("impossible\n");

}

return 0;

}

個人剛學C語言不久,懂得不多,懇請賜教。

已更新項目:

WELL,看來這就是錯誤的點......

感恩~~

但,請問輸入「100 1」會是impossible,

我卻會算出分數為50 49 ,

是因為忽略了小數點的可能性囉?

3 個解答

評分
  • 6 年前
    最佳解答

    > 高中程式解題系統c004: Beat the Spread!

    原題是神東東啊? 可以提供連結嗎?

    2014-03-16 06:08:09 補充:

    知道了,謝謝!

    應該是簡單的吧! 就是 一定要

    1. a >=b >= 0

    2. a+b 偶數

    就對啦!

    2014-03-17 01:31:55 補充:

    #include <stdio.h>

    int main(){

    int n,a,b;

    for(a=scanf("%d",&n);0<n && 2==scanf("%d %d",&a,&b); --n){

    if (0 <= b && b <= a && 0==(1&(a+b)))

    printf("%d %d\n", (a+b)/2, (a-b)/2);

    else

    printf("imp0ssible\n");

    }

    return 0;

    }

    • Commenter avatar登入以對解答發表意見
  • 6 年前

    小數點沒處理到

    你輸入100和1

    你的程式會這樣跑

    101/2=50.5

    但是你的型態是int整數

    所以0.5被捨去了

    印出50

    另一個印出的也是相同道理

    至於怎麼處理這部份自己想囉

    2014-03-15 22:32:51 補充:

    > prisoner26535:

    http://zerojudge.tw/

    2014-03-15 22:33:52 補充:

    http://zerojudge.tw/ShowProblem?problemid=c004

    • Commenter avatar登入以對解答發表意見
  • wei
    Lv 6
    6 年前

    你有看到範例的第4筆測資嗎......

    2014-03-15 16:41:52 補充:

    打球沒有 0.x 分的吧......

    • Commenter avatar登入以對解答發表意見
還有問題?馬上發問,尋求解答。