#15652: C++ 求解


jasonkool (woooolala)

學校 : 不指定學校
編號 : 86994
來源 : [220.134.109.41]
最後登入時間 :
2021-02-18 17:11:02
a005. Eva 的回家作業 -- POJ | From: [118.160.103.150] | 發表日期 : 2018-10-19 01:03

測試的時候是AC
但送出答案是WA line7

請各位大神相助!

 

#include<iostream>
#include<math.h>
using namespace std;

int main()
{
int i, t, a, b, c, d, e;
while(cin>>t)
{
for ( i = 0 ; i < t ; i++ )
{
cin>>a>>b>>c>>d;
if ((d/c) == (c/b))
{
e = pow(d,2)/c;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<endl;
}
else if ((d-c) == (c-b))
{
e = 2*d-c;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<endl;
}

}
}
return 0;
}

 
#15654: Re:C++ 求解


OwO310659 (OwO)

學校 : 新北市立板橋高級中學
編號 : 58647
來源 : [118.150.111.60]
最後登入時間 :
2024-04-25 01:16:40
a005. Eva 的回家作業 -- POJ | From: [106.105.27.148] | 發表日期 : 2018-10-19 01:53

你可以考慮以下測資: (對照你的程式依序為 a b c d )

3 6 9 12


由於C++中 int 的 /運算子 進行的是 整數除法 ,
所以在 d/c 和 c/b 的結果會變成 12/9 和 9/6 最後計算結果會是 1 和 1 ,
所以你的程式會認為 3 6 9 12 是一個等比數列而計算出 16 ,
實際上答案應為 15 才對~
(另外事實上在範測的 1 2 3 4 也有相同問題, 只是剛好最後計算的答案正確而已~ )


以上希望有幫助到你~ OwO

 
#15656: Re:C++ 求解


jasonkool (woooolala)

學校 : 不指定學校
編號 : 86994
來源 : [220.134.109.41]
最後登入時間 :
2021-02-18 17:11:02
a005. Eva 的回家作業 -- POJ | From: [210.71.78.241] | 發表日期 : 2018-10-19 08:12

你可以考慮以下測資: (對照你的程式依序為 a b c d )

3 6 9 12


由於C++中 int 的 /運算子 進行的是 整數除法 ,
所以在 d/c 和 c/b 的結果會變成 12/9 和 9/6 最後計算結果會是 1 和 1 ,
所以你的程式會認為 3 6 9 12 是一個等比數列而計算出 16 ,
實際上答案應為 15 才對~
(另外事實上在範測的 1 2 3 4 也有相同問題, 只是剛好最後計算的答案正確而已~ )


以上希望有幫助到你~ OwO


喔喔了解了  謝謝你的幫忙!(*‘ v`*)

 
ZeroJudge Forum