Re: [ACM ] 10341 - Solve It

看板C_and_CPP (C/C++)作者 (十三)時間16年前 (2009/08/06 23:41), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
程式碼很短我就直接po了 關鍵在於你怎麼判斷No solution 另外輸入的地方也改了 #include <iostream> #include <iomanip> #include <cmath> using namespace std; double f(double, double, double, double, double, double, double); int main(){ double p,q,r,s,t,u; double tmp1, tmp2, tmp3; double low_bound; double up_bound; double mid; cout.precision(4); cout.setf(ios::fixed,ios::floatfield); while(cin>>p>>q>>r>>s>>t>>u){ low_bound=0.0; up_bound=1.0; while(1){ mid=(low_bound+up_bound)/2.0; tmp1=f(p, q, r, s, t, u, low_bound); tmp2=f(p, q, r, s, t, u, up_bound); tmp3=f(p, q, r, s, t, u, mid); if (fabs(tmp3)<1e-9) { cout <<mid<<endl; break; } else if(tmp1==tmp2){ cout<<"No solution"<<endl; break; } else{ if(tmp1*tmp3>0.0){ low_bound=mid; } else{ up_bound=mid; } } } } } double f(double p, double q, double r, double s, double t, double u, double x){ return p*exp(-1.0*x)+q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+u; } Bleed ※ 引述《walker2009 (誰人未嘗自以為)》之銘言: : 最近在練習簡單的 ACM 題目 : 在討論區看到這題要用 binary search 解 : 嘗試寫了一下 : 很順利,測資也都對了 : 但上傳的時候就是 wrong answer : 因為是個簡單的程式 : 看了好久還是找不出 bug 在哪 : 不知道是不是 online judge 系統不熟悉導致的問題 : 或是有小地方沒考慮到 : 希望有經驗的大大可以幫忙解惑 Q_Q 感恩感恩 Orz : 題目: http://tinyurl.com/mxxc65 (firefox only) : http://acm.uva.es/p/v103/10341.html : Source Code: http://nopaste.info/283d6a45ba.html -- World of bleed1979 http://bleed1979.myweb.hinet.net/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.143.186

08/10 10:50, , 1F
謝謝bleed大^^ 雖然還是WA 但我知道部分邏輯錯在哪了
08/10 10:50, 1F
文章代碼(AID): #1AUlctq4 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1AUlctq4 (C_and_CPP)