10354 - 反矩陣   

Description

若一個nxn的方形矩陣A存在一個B使得AB = BA = In ,則B稱為A的反矩陣。

現給予一個3x3的矩陣A,求A的反矩陣。

舉例:

注意本題要求反矩陣的數值若為分數須化為最簡分數,且分母須為正數。

 

反矩陣公式:

 

以下是範例code的一部分:

#include

int a[3][3]={0},nu[3][3]={0},de[3][3]={0},div[3][3]={0};
//a[3][3] is input, nu[3][3] is the numerator of output, de[3][3] is the denominator of input, div[3][3] is gcd of nu[3][3] and de[3][3]
int i,j,det=0;
void show();
void simple();
int gcd(int x,int y);

int main(void)
{
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            scanf("%d",&a[i][j]);
        }
    }

    /* your code */

    simple();
    show();

    return 0;
}

void show(){
    for(i=0;i<3;i++){
        for(j=0;j<3;j++)
            printf("%4d",nu[i][j]/div[i][j]);
        printf("\n --- --- ---\n");
        for(j=0;j<3;j++)
            printf("%4d",de[i][j]/div[i][j]);
        printf("\n\n");
    }
}

void simple(){
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            if(nu[i][j]!=0)
                if(de[i][j]>0)
                    div[i][j]=gcd(abs(nu[i][j]),abs(de[i][j]));
                else
                    div[i][j]=-gcd(abs(nu[i][j]),abs(de[i][j]));
            else{
                de[i][j]=0;
                div[i][j]=1;
            }
        }
    }
}

int gcd(int x,int y){
    if(x%y==0) return y;
    else return gcd(y,x%y);
}

 

Input

3x3矩陣A

Output

A的反矩陣

Sample Input  Download

Sample Output  Download

Tags




Discuss