题解 | 小红的正整数计数
小红的正整数计数
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")