タイトルにある3つを関数化した
// 判別式 ll discriminant(ll a, ll b, ll c){ return b*b - 4*a*c; } // 2次方程式の解(x1, x2) pair<ld,ld> quadratic_equation(ll a, ll b, ll c){ ll D = discriminant(a,b,c); ld x1 = (-b-sqrt(D))/(2*a); ld x2 = (-b+sqrt(D))/(2*a); return {x1,x2}; } // 2点を通る直線を求める(係数 (a,b) を返す) // y = ax + b pair<ld,ld> line_from_two_point(ld x1, ld y1, ld x2, ld y2){ if(x1==x2){ // y軸と平行な直線 cerr << "TODO"; exit(0); } if(y1==y2){ // x軸と平行な直線 return {0, y1}; } // 傾き ld tilt = (y2-y1)/(x2-x1); ld a = tilt; ld b = a * (-x1) + y1; return {a,b}; }
verified
- yukicoder No.1064 ∪∩∩ / Cup Cap Cap https://yukicoder.me/problems/no/1064
- ✅ https://yukicoder.me/submissions/490526