从区间内首个奇数起每次加 2,累计所有奇数。
OJ: noi_openjudge
题目 ID: ch0105-09
难度:入门
标签:数学循环python
日期: 2026-07-30 23:01
题意
计算闭区间
思路
若左端点为偶数,首个奇数是 left + 1,否则就是 left。之后奇数间隔恒为 2,range(first_odd, right + 1, 2) 只生成需要累加的数。
代码
Python代码
python
left, right = map(int, input().split())
first_odd = left if left % 2 else left + 1
print(sum(range(first_odd, right + 1, 2)))C++代码
cpp
#include <cstdio>
int main(){
int m,n;
scanf("%d%d",&m,&n);
int i,sum = 0;
for(i=m;i<=n;i++){
if( i % 2 == 1)
sum += i;
}
printf("%d",sum);
return 0;
}复杂度
设区间内奇数数目为
总结
筛选固定步长序列时,应让 range 的起点和步长直接表达筛选规则。