样例输入: 1 5
样例输出: 4
思路:
题目数据是1e9,只有时间复杂度小于o(n) 才可以通过。暴力肯定不行,类似这种数学题,一时半会没有思路的,我们可以通过打表,快速罗列一定范围内的数据找规律。
我们列举0~100的数,不拿发现符合题意的数的规律为该范围内所有的奇数,和4的倍数。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e9;
bool v[N];
int l,r;
signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>l>>r;int c=(r+1)/2+r/4-l/2-l/4;cout<<c<<endl;return 0;}
细节:(r+1)/2是为了求出0~r内所有奇数的个数(如3->2),r/4找4的倍数(7->1),而且题目中l,r是两闭区间,所以要减去0~(l-1)区间内奇数个数。