AcWing 719. 连续奇数的和 2
原题链接
简单
作者:
aKun_0
,
2024-10-13 22:27:04
,
所有人可见
,
阅读 1
#include <algorithm>
#include "iostream"
using namespace std;
int n,x,y;
double q[12][12];
int sumOfOddNumbersInRange(int a, int b) {
// 确保 a < b
if (a > b) {
swap(a, b);
}
// 排除端点,向内移动一位
a++;
b--;
// 如果没有数字在范围内,返回0
if (a > b) {
return 0;
}
// 找到范围内的第一个奇数
int firstOdd = (a % 2 == 0) ? a + 1 : a;
// 找到范围内的最后一个奇数
int lastOdd = (b % 2 == 0) ? b - 1 : b;
// 如果没有奇数在范围内,返回0
if (firstOdd > lastOdd) {
return 0;
}
// 计算奇数的数量
int n = (lastOdd - firstOdd) / 2 + 1;
// 使用等差数列求和公式计算奇数和
return n * (firstOdd + lastOdd) / 2;
}
int main()
{
cin >> n;
while (n--) {
cin >> x >> y;
cout << sumOfOddNumbersInRange(x, y) << endl;
}
}