#include<stdio.h> #include<stdlib.h> #include<math.h> int main() { double a[3][3]={0},volumn; int i,j; while(scanf("%lf",&a[0][0])!=EOF) { for(i=0;i<3;i++) { if(i==0) { for(j=1;j<3;j++) scanf("%lf",&a[i][j]); } if(i!=0) { for(j=0;j<3;j++) scanf("%lf",&a[i][j]); } } volumn=abs(a[0][0]*a[1][1]*a[2][2]+a[1][0]*a[2][1]*a[0][2]+a[2][0]*a[1][2]*a[0][1]-(a[2][0]*a[1][1]*a[0][2] +a[0][1]*a[1][0]*a[2][2]+a[0][0]*a[2][1]*a[1][2])); printf("%.2f\n",volumn); } // system("PAUSE"); return 0; }
题目
http://acm.whu.edu.cn/learn/problem/detail?problem_id=1014
解题思路,就是求变换矩阵的行列式。
Problem 1014 - Doraemon?s Flashlight
#include<stdio.h> #include<math.h> int main() { int x1,x2,x3,y1,y2,y3,z1,z2,z3; while(scanf("%d%d%d",&x1,&x2,&x3)!=EOF) { scanf("%d%d%d",&y1,&y2,&y3); scanf("%d%d%d",&z1,&z2,&z3); printf("%.2f\n",(double)abs(x1*(y2*z3-y3*z2)-y1*(x2*z3-x3*z2)+z1*(x2*y3-x3*y2))); }; return 0; }