显而易见,题意是求a到b之间有多少偶数。注意这里的a,b范围是1~1e9,n组案例。而oj一秒能跑4e8,这题的时间限制是1s,所以很显然,暴力是行不通的。😫
既然暴力不行,那就可以先找找规律咯。🤔首先,整数分为奇数跟偶数,所以我们不难想到答案会不会是(b-a)/2呢。那就先造点数据实践一下,假设 a = 1,b = 3,偶数只有 2 这一个,而( 3 - 1 )/ 2 = 1 ,确实满足我们的猜想,但是只造一组数据显然不够,那么再假设,a = 1,b = 4,此时偶数有两个,分别为 2 4。此时( 4 - 1 )/ 2 = 1,不满足我们的猜想。😫
那我们再细致观察一下,会不会是跟边界的ab这两个数还有点关系呢,我们造的第一组案例来看ab都是奇数,所以猜想成立,第二组案例a是奇数b是偶数,最后的结果比我们猜想的多了一个。那不难猜到是不是边界为偶数时需要+1,那么如果边界都是偶数是不是要+2呢,我们假设 a = 2 ,b = 6,此时偶数个数是 3,而不考虑边界的情况下我们的猜想的结果是2,那就说明只需要+1。😋
综上,我们可以得到一个公式,求a到b之间的偶数个数 = ( b - a )/ 2 + ( a % 2 == 0 || b % 2 == 0 ) ,那么此题就解决完毕了。 🥳🥳🥳