多組測試數據。每組先輸入整數 n,再輸入 n 個整數。求這 n 個數中所有奇數的乘積。若無奇數,乘積為 1(空乘積單位元)。
#include
int main(void) {
int n;
while (scanf("%d", &n) == 1) {
long long product = 1; // 使用長長整型防溢出
for (int i = 0; i < n; i++) {
int x;
scanf("%d", &x);
if (x % 2 != 0) { // 判斷奇數
product *= x;
}
}
printf("%lld\n", product);
}
return 0;
}
x % 2 != 0(含負奇數),或 x & 1(位運算更快)。long long(64 位),極大數據下仍可能溢出,題目通常數據範圍允許。while(scanf("%d", &n)==1) 處理多組數據,內層 for 讀取 n 個數。| 輸入 | 輸出 | 說明 |
|---|---|---|
| 3 1 2 3 | 3 | 1×3=3 |
| 4 2 4 6 8 | 1 | 無奇數 |
| 5 -3 2 5 7 10 | -105 | 含負奇數 (-3)×5×7=-105 |