The Problem
Given a range [a, b], you are to find the summation of all the odd integers in this range. For example, the summation of all the odd integers in the range [3, 9] is 3 + 5 + 7 + 9 = 24.
Input
There can be at multiple test cases. The first line of input gives you the number of test cases, T (1 ≤ T ≤ 100). Then T test cases follow. Each test case consists of 2 integers a and b (0 ≤ a ≤ b ≤ 100) in two separate lines.
Output
For each test case you are to print one line of output - the serial number of the test case followed by the summation of the odd integers in the range [a, b].
Sample Input
2
1
5
3
5
Sample Output
Case 1: 9
Case 2: 8
解題思考
對於這一題的解,我們可以將之視為一個等差級數:首項為大於等於 a 的最小奇數 a'、末項為小於等於 b 的最大奇數 b'、項數為 (b' - a' + 2) / 2。
根據以上,我們便可以直接利用等差級數和的公式:[(a' + b') × (b' - a' + 2) / 2] / 2 = (a' + b') × (b' - a' + 2) / 4。
套用這個公式,答案就出來囉。
參考解答(C++)
#include <iostream> using namespace std; int main(void) { int t; cin >> t; for (int i = 1; i <= t; i++) { int a, b; cin >> a >> b; if (a % 2 == 0) { a++; } if (b % 2 == 0) { b--; } cout << "Case " << i << ": " << ((a + b) * (b - a + 2)) / 4 << endl; } #ifndef ONLINE_JUDGE system("pause"); #endif return 0; }
0 回覆:
張貼留言