Solution Idea

50039. Inner Product and Outer Product

參考解答

套用公式

$$ \overrightarrow{a} = (a_1, a_2, a_3), \; \overrightarrow{b} = (b_1, b_2, b_3), \; \overrightarrow{a} \cdot \overrightarrow{b} = a_1 b_1 + a_2 b_2 + a_3 b_3 $$

$$ \overrightarrow{a} = (a_1, a_2, a_3), \; \overrightarrow{b} = (b_1, b_2, b_3), \; \overrightarrow{a} \times \overrightarrow{b} = \begin{pmatrix} a_2b_3 - a_3b_2 ,& a_3b_1 - a_1b_3 ,& a_1b_2 - a_2b_1 \end{pmatrix} $$

特別小心,別在行尾多輸出空白,printf("%d %d %d \n", 1, 2, 3);printf("%d %d %d\n", 1, 2, 3); 多在行尾多輸出一個空白,雖然在終端機中看起來都相同,但是多於的空白仍然會被系統所攔劫,這可能是導致錯誤的原因。

另一個注意的要點,別忘記 scanf("%d", &x) 中的 &,其原意為 address of,若沒有正確讓系統知道答案要放回哪裡,可能會在執行輸入時,出現 Application.exe 已經停止運作 或者 Application.exe has stopped working 的字樣。或者反過來,看到上述的提示窗口時,請檢查程式碼中的 scanf 是否忘記打上 &

#include <stdio.h>
 
int main() {
    int ax, ay, az, bx, by, bz;
    scanf("%d%d%d", &ax, &ay, &az);
    scanf("%d%d%d", &bx, &by, &bz);
    printf("%d\n", ax*bx+ay*by+az*bz);
    printf("%d %d %d\n", ay*bz-az*by, az*bx-ax*bz, ax*by-ay*bx);
    return 0;
}

Discussion