题解 | 小红的正整数计数
小红的正整数计数
https://www.nowcoder.com/practice/bf1c0694fdb84d12bc03793dee837117
方法一:遍历计数
时间复杂度O(n)
#include <iostream>
using namespace std;
int main() {
int a, b;
while (cin >> a >> b) { // 注意 while 处理多个 case
int cnt = 0;
for(int i = a; i <=b; ++i){
if(i % 2 == 0) cnt++;
}
cout << cnt << endl;
}
}
// 64 位输出请用 printf("%lld")
方法二:根据端点值计算
时间复杂度O(1)
分三种情况
1.两个端点都是偶数
例如:a = 6, b = 8;
偶数数字的数量 = (8 - 6)/ 2 + 1;
2.两个端点一奇一偶
例如:a = 6, b = 9;
偶数数字的数量 = (9 - 6)/ 2 + 1;
3.两个端点都是奇数
例如:a = 7, b = 9;
偶数数字的数量 = (9 - 7)/ 2;
可以发现两边只要有一个偶数,统计结果就要+1
#include <iostream>
using namespace std;
int main() {
int a, b;
while (cin >> a >> b) { // 注意 while 处理多个 case
int cnt = (b - a) / 2;
if(a % 2 == 0 || b % 2 == 0){
cnt++;
}
cout << cnt << endl;
}
}
// 64 位输出请用 printf("%lld")
巨人网络成长空间 53人发布