d491 - 我也愛偶數 (swap 版)
題目描述
題目要求計算給定範圍 [a, b] (包含 a 和 b) 內所有偶數的總和。輸入包含兩個整數 a 和 b,可能 a > b,需要先進行交換。
解題思路
此題的核心思路是遍歷給定範圍內的數字,並將遇到的偶數累加到總和中。程式碼首先檢查 a 是否大於 b,如果是,則使用異或操作交換 a 和 b 的值,確保 a 始終小於或等於 b。然後,使用一個迴圈從 a 開始遍歷到 b,如果當前數字是偶數,則將其加到 total 變數中。
複雜度分析
- 時間複雜度: O(b - a) (最壞情況下需要遍歷
a到b之間的所有數字) - 空間複雜度: 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;
}