abcd 2 1 2 2 4
404084813 756964949
import sys
lines=sys.stdin.read().splitlines()
if len(lines)<2: sys.exit(0)
s=lines[0].strip()
q=int(lines[1].strip())
MOD=1000000007
BASE=911382323
n=len(s)
def build_hash(t):
pref=[0]*(len(t)+1)
pows=[1]*(len(t)+1)
for i,ch in enumerate(t, start=1):
pref[i]=(pref[i-1]*BASE + (ord(ch)-96))%MOD
pows[i]=(pows[i-1]*BASE)%MOD
return pref,pows
def get_hash(pref,pows,l,r):
return (pref[r] - pref[l-1]*pows[r-l+1])%MOD
pref,pows=build_hash(s)
out=[]
for i in range(q):
l,r=map(int,(lines[2+i] if 2+i<len(lines) else '1 1').split())
out.append(str(get_hash(pref,pows,l,r)))
sys.stdout.write('\
'.join(out))
import sys
lines=sys.stdin.read().splitlines()
if len(lines)<2: sys.exit(0)
s=lines[0].strip()
q=int(lines[1].strip())
MOD=1000000007
BASE=911382323
n=len(s)
def build_hash(t):
pref=[0]*(len(t)+1)
pows=[1]*(len(t)+1)
for i,ch in enumerate(t, start=1):
pref[i]=(pref[i-1]*BASE + (ord(ch)-96))%MOD
pows[i]=(pows[i-1]*BASE)%MOD
return pref,pows
def get_hash(pref,pows,l,r):
return (pref[r] - pref[l-1]*pows[r-l+1])%MOD
pref,pows=build_hash(s)
out=[]
for i in range(q):
l,r=map(int,(lines[2+i] if 2+i<len(lines) else '1 1').split())
out.append(str(get_hash(pref,pows,l,r)))
sys.stdout.write('\
'.join(out))