內容
給你頂點與拋物線上一點座標,列出該方程式。例如頂點座標 1 2 線上一點座標 0 5 可以推算出 1y = 3x^2 – 6x + 5
(係數如果是 1 不必省略,每一項係數都為整數,y 項係數為正整數)
輸入
四個整數 x1 y1 x2 y2 前兩個為頂點座標(x1, y1),後兩個為拋物線上一點座標 (x2, y2)
1 2 0 5
1 9 18 60
輸出
輸出 ay = bx^2 + cx + d 的式子,a 為正整數,b, c, d 為整數,a, b, c, d 為 1 時不必省略,等號和加號前後有空白
1y = 3x^2 + -6x + 5
17y = 3x^2 + -6x + 156
解題思路
簡單的數學公式轉程式碼。
完整程式碼
AC (2ms, 100KB)
#include <stdio.h> #define SWAP(x, y) x^=(y^=(x^=y))
inline int gcd(int m, int n) { while (n) { m %= n; SWAP(m, n); } return m; }
int main() { int x1, x2, y1, y2, g, a, b, c, d; while (scanf(" %d %d %d %d", &x1, &x2, &y1, &y2) == 4) { a = (y1 - x1) * (y1 - x1); b = (y2 - x2); g = gcd(a, b); b /= g; a /= g; c = -2 * b * x1; d = b * x1 * x1 + a * x2; printf("%dy = %dx^2 + %dx + %d\n", a, b, c, d); } return 0; }
|