b603
輸入說明 :
四個整數 x1 y1 x2 y2 前兩個為頂點座標(x1, y1),後兩個為拋物線上一點座標 (x2, y2)
輸出說明 :
輸出 ay = bx^2 + cx + d 的式子,a為正整數,b, c, d 為整數,a, b, c, d 為 1 時不必省略,等號和加號前後有空白
這題先找出拋物線方程式,確定不會是左右開的那種拋物線,照著方程式做,
記得兩邊要約分,約分就是除以最大公因數
ay = bx^2 + cx + d 題目說的方程式,所以都是上下開口
(x-h)^2=4c(y-k) , (h,k)是頂點
#include<stdio.h>
#include<math.h>
int gcd(int, int);
int main()
{
int x1,y1;
int x2,y2;
int a,b,c,d;
while(scanf("%d%d%d%d",&x1,&y1,&x2,&y2)==4)
{
int xtemp = pow((double)(x2-x1),2);
int ytemp = y2 - y1;
//約分,就是除以最大公因數
int gcdtemp=gcd((xtemp),(ytemp));
xtemp/=gcdtemp;
ytemp/=gcdtemp;
//printf("%d %d\n",xtemp,ytemp);
a=xtemp, b=ytemp,c = -2*ytemp*x1, d=ytemp*pow((double)x1,2)+y1*xtemp;
printf("%dy = %dx^2 + %dx + %d\n",a,b,c,d);
}
}
int gcd(int m, int n)
{
if(n == 0)
return m;
else
return gcd(n, m % n);
}