給定區間 [m, n],求區間內所有偶數的平方和與所有奇數的立方和。多組測試,直到 EOF。結果保證 32 位整數範圍內。
直接遍歷區間累加即可,但需注意 m 可能大於 n(需交換)。偶數平方和:sum_even = Σ_{x even} x^2;奇數立方和:sum_odd = Σ_{x odd} x^3。也可用數學公式 O(1) 計算,但 n-m ≤ 10^6 時遍歷也足夠快。此處給出遍歷版。
#include
using namespace std;
int main() {
long long m, n;
while (cin >> m >> n) {
if (m > n) swap(m, n);
long long sumEven = 0, sumOdd = 0;
for (long long x = m; x <= n; ++x) {
if (x % 2 == 0) sumEven += x * x;
else sumOdd += x * x * x;
}
cout << sumEven << " " << sumOdd << endl;
}
return 0;
}
簡單的區間求和問題,注意輸入順序與數據類型(long long 防溢出)。若區間極大可用等差數列求和公式優化。