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);
}