# 解題紀錄 ## 題目:a005. Eva 的回家作業 ## 📙 題目描述 請寫一個程式,可以讀入指定的字串,並且輸出指定的字串。 比如:輸入字串 "world", 則請輸出 "hello, world" **範例:** 輸入說明 第一行是數列的數目t(0 <= t <= 20)。 以下每行均包含四個整數,表示數列的前四項。 約定數列的前五項均為不大於 $10^5$ 的自然數,等比數列的比值也是自然數。 輸出說明 輸出題目指定的文字。 ```txt 範例輸入 #1 範例輸出 #1 2 1 2 3 4 5 1 2 3 4 1 2 4 8 16 1 2 4 8 ``` --- ## ✒️ 解題思路 這題要求我們判別一串數字是**等差數列**還是**等比數列** **求出第五項** 根據等差公式 $a_1 = a, a_2 =a + d, a_3 = a + 2\cdot d,...$ 因此可以知道 $a_1 + a_4 = a_2 + a_3 = 2 \cdot a_1 + 3\cdot d$ 要求出第五項也就是湊出 $a_1 + 4 \cdot d$ 可以得知 $a_2 +a_4 - a_1 = a_5$ 如果前述判別不是等差數列,那就是等比數列。 求 $a_5 = a_1 \cdot r ^{4}$ 讓 $(a_{3})^{2} / a_1$ 得出 $a_5$ --- ## 💻 C 語言解法 ```c #include <stdio.h> int main() { int t;//測資數 while (scanf("%d", &t) != EOF) { while(t--){ int a[4]; //存放數字 for(int i = 0;i < 4;i++){ scanf("%d",a + i); printf("%d ",a[i]); } if(a[0]+a[3] == a[1]+a[2]){ printf("%d",a[1]+a[3] -a[0] ); } else{ printf("%d",a[2]*a[2]/a[0]); } putchar('\n'); } } } ```