AOJ0241 Quaternion Multiplication
問題リンク Quaternion Multiplication
- 解法
(x1 + y1*i + z1*j + w1*k) * (x2 + y2*i + z2*j + w2*k)
を頑張って展開すると
(x1*x2 - y1*y2 - z1*z2 - w1*w2)
+(x1*y2 + y1*x2 + z1*w2 - w1*z2)i
+(x1*z2 - y1*w2 + z1*x2 + w1*y2)j
+(x1*w2 + y1*z2 - z1*y2 + w1*x2)k
になります。
- ソース
import java.util.Scanner; //Quaternion Multiplication public class AOJ0241 { void run(){ Scanner sc = new Scanner(System.in); for(;;){ int n = sc.nextInt(); if(n==0)break; for(int i=0;i<n;i++){ int x1 = sc.nextInt(), y1 = sc.nextInt(), z1 = sc.nextInt(), w1 = sc.nextInt(); int x2 = sc.nextInt(), y2 = sc.nextInt(), z2 = sc.nextInt(), w2 = sc.nextInt(); int x = x1*x2 - y1*y2 - z1*z2 - w1*w2; int y = x1*y2 + y1*x2 + z1*w2 - w1*z2; int z = x1*z2 - y1*w2 + z1*x2 + w1*y2; int w = x1*w2 + y1*z2 - z1*y2 + w1*x2; System.out.println(x+" "+y+" "+z+" "+w); } } } public static void main(String[] args) { new AOJ0241().run(); } }