2012年3月10日 星期六

a410: 解方程

內容 :
    話說同學們正在學習二元一次方程式。
    二元一次方程式的練習題鋪天蓋地地用向同學們,同學們正苦惱於一次次的四則運算、移        項、合併同類項等等。
    他們知道你很聰明,想請你幫他們編一個解二元一次方程式的程式。
    我們假定二元一次方程式的一般格式如下;(a,b,c,d,e,f為長數,x,y為未知數)
        ax+by=c
        dx+ey=f
    程式讀入a,b,c,d,e,f後,輸出解。
    當然,方程式也有可能存在無解或有無窮解的情况:如果(x,y)没有相對應的實數對滿足方程式則無解;相反,如果(x,y)有多組對應的實數對滿足方程式則有無數解。
    如果無解,就输出“No answer”;如果有無窮解,就輸出“Too many”。

輸入說明 :
    輸入僅1行,包含6个整數,a,b,c,d,e,f。輸入資料保證正確。

輸出說明 :
    如果有解,那麼第1行先輸出“x=”,再輸出x的值,第2行先輸出“y=”,再輸出y的值,均保留2位小數,請參照範例輸出。
    如果無解或有無數解則按要求輸出“No answer”或“Too many”。

範例輸入 :
1 1 2 1 -1 0

範例輸出 :
x=1.00
y=1.00

程式碼 :
#include<stdio.h>

int main()
{
    long a,b,c,d,e,f,temp;
    
    scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
    
    temp = a*e-b*d;
    if(temp == 0)
    {
        if(c*d == a*f)
            printf("Too many\n");
        else
            printf("No answer\n");
    }
    else
    {
        printf("x=%.2f\n",(double)(c*e-b*f)/temp);
        printf("y=%.2f\n",(double)(c*d-a*f)/-temp);
    }
    return 0;
}


http://zerojudge.tw/ShowProblem?problemid=a410

沒有留言:

張貼留言