# Greedy# Arithmetic Progression# Conditional Logic

d491 - 我也愛偶數 (swap 版)

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算給定範圍 [a, b] (包含 ab) 內所有偶數的總和。輸入包含兩個整數 ab,可能 a > b,需要先進行交換。

解題思路

此題的核心思路是遍歷給定範圍內的數字,並將遇到的偶數累加到總和中。程式碼首先檢查 a 是否大於 b,如果是,則使用異或操作交換 ab 的值,確保 a 始終小於或等於 b。然後,使用一個迴圈從 a 開始遍歷到 b,如果當前數字是偶數,則將其加到 total 變數中。

複雜度分析

  • 時間複雜度: O(b - a) (最壞情況下需要遍歷 ab 之間的所有數字)
  • 空間複雜度: O(1) (只使用了常數個額外的變數)

程式碼

#include <stdio.h>
int main(){
	int a,b,total;
	scanf("%d%d", &a,&b);
	if(a>b){
		a=a^b;
		b=a^b;
		a=a^b;
	}
		for(total=0;a<=b;){
			if(a%2==0){
				total=total+a;
				a+=2;
			}
			else
				a++;
	}
	printf("%d\n", total);
	return 0;
}

Discussion