首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

杭電OJ 2006 題解:奇數乘積計算——循環累乘與輸入處理

     編輯:關於C

題目描述

多組測試數據。每組先輸入整數 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;
}

關鍵點

  1. 初始值為 1:乘法單位元,無奇數時輸出 1 符合數學定義。
  2. 奇數判斷:x % 2 != 0(含負奇數),或 x & 1(位運算更快)。
  3. 溢出風險:乘積快速增長,建議用 long long(64 位),極大數據下仍可能溢出,題目通常數據範圍允許。
  4. 輸入循環:外層 while(scanf("%d", &n)==1) 處理多組數據,內層 for 讀取 n 個數。

測試用例

輸入輸出說明
3
1 2 3
31×3=3
4
2 4 6 8
1無奇數
5
-3 2 5 7 10
-105含負奇數 (-3)×5×7=-105
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved