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

杭電 OJ 2007:區間內偶數平方和與奇數立方和 - C 語言實現

     編輯:關於C語言

題目描述

輸入兩個整數 m 和 n,計算從 min(m,n) 到 max(m,n) 之間(包含邊界)所有偶數的平方和,以及所有奇數的立方和。輸入包含多組測試數據,以 EOF 結束。

解題思路

首先確保 m ≤ n,若否則交換兩值。然後遍歷區間 [m, n],根據奇偶性累加:

  • 偶數:累加 i²
  • 奇數:累加 i³

參考代碼

#include <stdio.h>

int main(void) {
    int m, n, i;
    long long even_sum, odd_sum;  // 使用 long long 防止溢出
    int temp;

    while (scanf("%d %d", &m, &n) != EOF) {
        if (m > n) {
            temp = m;
            m = n;
            n = temp;
        }

        even_sum = 0;
        odd_sum = 0;

        for (i = m; i <= n; i++) {
            if (i % 2 == 0)
                even_sum += (long long)i * i;
            else
                odd_sum += (long long)i * i * i;
        }

        printf("%lld %lld\n", even_sum, odd_sum);
    }

    return 0;
}

注意事項

  • 數據類型選擇:平方和立方增長較快,建議使用 `long long` 存儲結果,避免整型溢出
  • 邊界處理:循環條件為 `i <= n`,確保包含上邊界
  • 輸入交換:使用臨時變量實現 m、n 的交換,保證 m ≤ n

優化提示

可利用數學公式直接計算而無需循環:

  • 偶數平方和:4 × Σk² (k 從 ceil(m/2) 到 floor(n/2))
  • 奇數立方和:Σ(2k-1)³ (k 在對應範圍)

但對於本題數據範圍,直接循環完全足夠且更直觀。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved