Source Code
#include<iostream>
#include<algorithm>
#include<cmath>
#include<map>
#include<vector>
#include<set>
//#include<bits/stdc++.h>
char visit[1000][1000];
int n, m;
int ans=0;
using namespace std;

long long arr_8[1000000],arr_4[1000000],arr_2[1000000],arr_6[1000000];


int main()
{

    std::ios_base::sync_with_stdio(NULL);
    cin.tie(NULL);
    cout.tie(NULL);
    
 
 string s;
 cin>>s;
 for(int j=1, i=s.size()-2;i>=0;i--,j++)
 {
         if(j%4==0&&s[i]=='1')
         arr_6[i]=1;
          else if (j%4==1&&s[i]=='1')
         arr_2[i]=1;
          else if (j%4==2&&s[i]=='1')
         arr_4[i]=1;
         else if (j%4==3&&s[i]=='1')
         arr_8[i]=1;
         
         
         
 }
 
 for(int i=1;i<s.size();i++)
 {
        arr_2[i]+=arr_2[i-1];
        arr_4[i]+=arr_4[i-1];
        arr_8[i]+=arr_8[i-1];
        arr_6[i]+=arr_6[i-1];
 }
 
 int q;
 cin>>q;
 while(q--)
 {
         int x,y;
         cin>>x>>y;
         x--,y--;
         long long ans=0;
         long long c2,c4,c6,c8;
         
        if(x==0)
        {
                c2=arr_2[y];
                 c4=arr_4[y];
                  c8=arr_8[y];
                   c6=arr_6[y];
                
        }
        else
        {
                 c2=arr_2[y]-arr_2[x-1];
                 c4=arr_4[y]-arr_4[x-1];
                  c8=arr_8[y]-arr_8[x-1];
                   c6=arr_6[y]-arr_6[x-1];
        }
        
        if(y==s.size()-1)
        {
             ans=(c2*2)+(c4*4)+(c8*8)+(c6*6);
                
                if(s[y]=='1')
                ans++;
                cout<<ans%10<<"\n";
                continue;
        
                
        }
      //  cout<<c8<<"\n";
        
        
        int k=s.size()-y-1;
        //cout<<k<<"\n";
        if(k%4==0&&s[y]=='1')
        c6--;
        else if(k%4==1&&s[y]=='1')
        c2--;
        else if(k%4==2&&s[y]=='1')
        c4--;
        else if(k%4==3&&s[y]=='1')
        c8--;
        
        
        
        int g=s.size()-y-1;
        
        
       
        if(g%4==0)
        {
                ans=(c2*2)+(c4*4)+(c8*8)+(c6*6);
                
                if(s[y]=='1')
                ans++;
                cout<<ans%10<<"\n";
        }
        if(g%4==1)
        {
                 ans=(c2*6)+(c4*2)+(c8*4)+(c6*8);
                
                if(s[y]=='1')
                ans++;
                 cout<<ans%10<<"\n";
        }
       else  if(g%4==2)
        {
                 ans=(c2*8)+(c4*6)+(c8*2)+(c6*4);
                
                if(s[y]=='1')
                ans++;
                cout<<ans%10<<"\n";
        }
        else if(g%4==3)
        {
                 ans=(c2*4)+(c4*8)+(c8*6)+(c6*2);
                
                if(s[y]=='1')
                ans++;
                cout<<ans%10<<"\n";
               
        }
        
         
         
         
 }
   
}
Copy
Binarithm shima_176
GNU G++17
202 ms
7.4 MB
Accepted