ぱーぽーの競プロ記

競技プログラミングに関することを書きます。

AOJ 0241Quaternion Multiplication

問題文はこちら↓
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0241


・概要
四元数(複素数を拡張したもの)の掛け算をする問題です。


・解法
やるだけ問題です。
私の場合は手計算でx,y,z,wに対応する項を求めました。


ソースコード

import java.util.*;

public class aoj0241{
    void run(){
	Scanner sc = new Scanner(System.in);
	
	while(true){
	    int n = sc.nextInt();
	    if(n==0)break;

	    for(int i = 0 ; i < n ; i++){
		int[] a = new int[8];
		
		for(int j = 0 ; j < 8 ; j++){
		    a[j] = sc.nextInt();
		}

		int x = a[0]*a[4]-a[1]*a[5]-a[2]*a[6]-a[3]*a[7];
		int y = a[0]*a[5]+a[1]*a[4]+a[2]*a[7]-a[3]*a[6];
		int z = a[0]*a[6]-a[1]*a[7]+a[2]*a[4]+a[3]*a[5];
		int w = a[0]*a[7]+a[1]*a[6]-a[2]*a[5]+a[3]*a[4];

		System.out.println(x +" "+ y +" "+ z +" "+ w);
	    }
	}
    }

    public static void main(String[] args){
	new aoj0241().run();
    }
}