Source Code
#include <iostream>
#include <algorithm>
using namespace std;
int calc[200000][9], a[4] = {2, 4, 8, 6};
int main() {
	int q, l, r, n;
	string s;
	cin >> s >> q;
	n = s.size();
	reverse(s.begin(), s.end());
	int p = 2;
	for(int i = 1; i < n; ++i){
		for(int j = 2; j < 9; j += 2){
			calc[i][j] = calc[i - 1][j];
		}
		if(s[i] == '1'){
			calc[i][p]++;
		}
		p *= 2;
		p %= 10;
	}
	while(q--){
		cin >> r >> l;
		--l, --r;
		l = n - 1 - l, r = n - 1 - r;
		int ans = s[l] == '1';
		for(int i = 0; i < 4; ++i){
			ans += (calc[r][a[(i + l) % 4]] - calc[l][a[(i + l) % 4]]) * a[i];
			ans %= 10;
		}
		cout << ans << endl;
	}
	return 0;
}
Copy
Binarithm Ma7moud.7amdy
GNU G++17
968 ms
8.1 MB
Accepted