제출 #83556

#제출 시각아이디문제언어결과실행 시간메모리
83556XBXJLeiLeLeiLeMate (COCI18_mate)Pypy 2
10 / 100
2071 ms21288 KiB
s = raw_input() q = input() def combination(n, d): k = d - 2 result = 1 for i in range(k): result*=n n-=1 for i in range(k): result/=k k-=1 return result def mod(num): return num % (10**9+7) arr = [] for i in range(q): d, xy = raw_input().split() d = int(d) x = xy[0] y = xy[1] arr_l = [] arr_c = [] a = -1 b = -1 if x != y: for i in range(len(s)): if i >= d - 2 and s[i] == x: arr_l.append(i) arr_c.append(0) a = i b += 1 elif len(arr_l)>0 and s[i]==y and i > a: for k in range(len(arr_c)): arr_c[k] += 1 for j in range(len(arr_l)): arr_l[j] = mod(combination(arr_l[j], d)) total = 0 for i in range(len(arr_l)): total += mod(arr_l[i]*arr_c[i]) arr.append(total) else: for i in range(len(s)): if i >= d - 2 and s[i] == x: arr_l.append(i) for k in range(len(arr_c)): arr_c[k] += 1 arr_c.append(0) for j in range(len(arr_l)): arr_l[j] = mod(combination(arr_l[j], d)) total = 0 for i in range(len(arr_l)): total += mod(arr_l[i]*arr_c[i]) arr.append(total) for i in arr: print i
#Verdict Execution timeMemoryGrader output
Fetching results...