2011年8月17日 星期三

d623: 反方陣

內容 :
    genius0615上課時總是在打手機不聽老師上課
    有一天老師在上矩陣時終於爆發了!!!
    老師處罰他寫1千題的反方陣(定義在下面的提示)
    在他欲哭無淚時
    突然想到有ZJ這個網站
    找個大神幫他寫程式作業一下就秒殺了
    於是他把這題貼到了上面
    現在就麻煩大神們幫他寫個程式
    秒殺這些題目吧

輸入說明 :
    輸入有兩行每行有2個數字代表2階方陣
    輸入4個0表示結束

輸出說明 :
    輸出此方陣的反方陣精準到小數點以下第5位
    若此方陣無反方陣則輸出cheat!

範例輸入 :
1 2
3 4
1 1
1 1
0 0
0 0

範例輸出 :
-2.00000 1.00000
1.50000 -0.50000
cheat!

提示 :
背景知識: 反方陣
反方陣是個類似指數的-1次方的東西
換句話說方陣乘以反方陣會等於單位方陣
單位方陣的定義是任何方陣乘以它之後值不變
矩陣乘法可參考:
http://zerojudge.tw/ShowProblem?problemid=d481

程式碼 :
#include<stdio.h>

int main()
{
    int a[4],temp;
    
    while(scanf("%d %d %d %d",&a[0],&a[1],&a[2],&a[3])==4)
    {
        if(a[0]==0 && a[1]==0 && a[2]==0 && a[3]==0)
            break;
        temp = a[0]*a[3] - a[1]*a[2];
        if(temp == 0)
            printf("cheat!\n");
        else
            printf("%.5f %.5f\n%.5f %.5f\n",(float)a[3]/temp,(float)-a[1]/temp,(float)-a[2]/temp,(float)a[0]/temp);
    }
    
    return 0;
}




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

沒有留言:

張貼留言