Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #include <cstdio>
- #include <cstring>
- #include <cmath>
- #include <cstring>
- #include <chrono>
- #include <complex>
- #define endl "\n"
- #define ll long long int
- #define vi vector<int>
- #define vll vector<ll>
- #define vvi vector < vi >
- #define pii pair<int,int>
- #define pll pair<long long, long long>
- #define mod 1000000007
- #define inf 1000000000000000001;
- #define all(c) c.begin(),c.end()
- #define mp(x,y) make_pair(x,y)
- #define mem(a,val) memset(a,val,sizeof(a))
- #define eb emplace_back
- #define f first
- #define s second
- using namespace std;
- int main()
- {
- int T;
- cin>>T;
- for(int t=1;t<=T;t++)
- {
- ll l,r;
- cin>>l>>r;
- vi odd(r-l+1,0),even(r-l+1,0);
- int iter = floor(sqrt(r));
- for(int i=1; i<=iter; i++){
- if(i%2==0){
- int shift = l%i;
- for(int j=(shift)?(l+i-shift):l; j<=r; j+=i){
- if(i>floor(sqrt(j))) continue;
- even[j-l]++;
- if(i*i==j) continue;
- if((j/i)%2==1) odd[j-l]++;
- else even[j-l]++;
- }
- } else{
- int shift = l%i;
- for(int j=(shift)?(l+i-shift):l; j<=r; j+=i){
- if(i>floor(sqrt(j))) continue;
- odd[j-l]++;
- if(i*i==j) continue;
- if((j/i)%2==1) odd[j-l]++;
- else even[j-l]++;
- }
- }
- }
- ll ans = 0;
- for(int i=0; i<r-l+1; i++){
- if(abs(odd[i]-even[i])<=2) ans++;
- }
- // for(auto i : odd) cout<<i<<" ";
- // cout<<"\n";
- //
- // for(auto i : even) cout<<i<<" ";
- // cout<<"\n";
- cout<<"Case #"<<t<<": "<<ans<<endl;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment