def solve(N, ss): f = 0 c = 0 for i, s in enumerate(ss): if c < i: f += i - c c += i - c
c += s
return f, c
for i in range(T): N, S = fin.readline().split() ss = [] for j in range(int(N)+1): ss.append(int(S[j])) solution = solve(int(N), ss) answer = "Case #%d: %s\n" % (i+1, solution[0]) print answer fout.write(answer)
def mult(qs): r = q('1') for vq in qs: r = r * vq return r
def mult_table(table, vs, a, b, indices): key = str(a) + ',' + str(b) if table.has_key(key): return table[key] else: cs = [x for x in indices if a < x < b] if not cs: value = mult(vs[a:b]) else: c = cs[len(cs)/2] value = mult_table(table, vs, a, c, indices) * mult_table(table, vs, c, b, indices) #print key, value, a, c, b table[key] = value return value
#print q('i') * q('j'), q('j') * q('k'), q('i') * q('j') * q('k') def solve(L, X, ijk): fqs = [] for i in ijk: if i == 'i' or i == 'j' or i == 'k': fqs.append(q(i)) qs = [] X = X % 16 extend = min(X, 4) for i in range(extend): qs.extend(fqs)
print qs lq = q('1') left_plus = [] left_minus = [] for i_l, l in enumerate(qs): # print lq, l lq = nx = lq * l if nx == q('i'): left_plus = [i_l+1, nx, l] if nx == -q('i'): left_minus = [i_l+1, nx, l] if left_plus and left_minus: break right_plus = [] right_minus = [] rq = q('1') for i_r, r in enumerate(reversed(qs)): rq = nx = r * rq if nx == q('k'): right_plus = [i_r+1, nx, r] elif nx == -q('k'): right_minus = [i_r+1, nx, r] if right_plus and right_minus: break if (not left_plus) and not left_minus: return "NO" if not right_plus and not right_minus: return "NO" dqs = [] for idqs in range(X):#range(min(X, 8)): dqs.extend(fqs)
lefts = [] rights = []
mc = {} mfqs = mult(fqs) indices = [] if left_plus: indices.append(left_plus[0]) lefts.append(left_plus) if left_minus: indices.append(left_minus[0]) lefts.append(left_minus) if right_plus: indices.append(len(dqs) - right_plus[0]) rights.append(right_plus) if right_minus: indices.append(len(dqs) - right_minus[0]) rights.append(right_minus) for ie in range(8): index = ie * len(fqs) indices.append(index) mc[str(index) + ',' + str(index + len(fqs))] = mfqs sorted_indices = sorted(set(indices))
# prev = -1 # mc = mult_table(qs, sorted_indices) # for ii in sorted_indices: # for ij in sorted_indices[]: # if # if prev > 0 # mc[[prev, index]] = mult(qs[prev:index+1]) # prev = index print mfqs, mc, sorted_indices for j_l in lefts: for j_r in rights: if j_l[0] + j_r[0] < len(dqs) + 2: #isj = mult_table(mc, dqs, j_l[0], len(dqs)-j_r[0], sorted_indices) isj = mult(dqs[j_l[0] : len(dqs) - j_r[0] ]) #print j_l[1], isj, j_r[1], j_l[1] * isj * j_r[1] if j_l[1] * isj * j_r[1] == -q('1'): return "YES" # else: # j_left = mult(dqs[j_l[0] : -1]) # j_right = mult(dqs[0 : len(dqs) - j_r[0]]) # j_middle = q('1') # for k_d in range(min(X - 8, 4)): # j_middle = j_middle * mfqs # if j_l[1] * j_left * j_middle * j_right * j_r[1] == -q('1'): # return "YES" return "NO" for i in range(T): L, X = map(int, fin.readline().split()) ijk = fin.readline() solution = solve(L, X, ijk) # if solution > candidate: # print 'ERROR', i + 1, solution, candidate # if solution != solution1: # print 'ERROR', i + 1, solution, solution1, candidate answer = "Case #%d: %s\n" % (i + 1, solution) print answer fout.write(answer)
Gabriel = "GABRIEL" Richard = "RICHARD" def solve(X, R, C): if (R * C) % X != 0: print "%" return Richard if R < X and C < X: print "<" return Richard if X > 6: print "6" return Richard min_l = 1 + (X - 1) / 2 if X > 2 and (R < min_l or C < min_l): print "sqrt" return Richard snake = 2 + (X - 2) / 3 if X > 3 and (R <= snake or C <= snake): print "snake" if X == 4: return Richard elif X == 5 and (R < 5 and C < 5): return Richard elif X == 6 and (R < 7 and C < 7): return Richard
return Gabriel
for i in range(T): X, R, C = map(int, fin.readline().split()) print i+1, X, R, C
solution = solve(X, R, C) # if solution > candidate: # print 'ERROR', i + 1, solution, candidate # if solution != solution1: # print 'ERROR', i + 1, solution, solution1, candidate answer = "Case #%d: %s\n" % (i + 1, solution) print answer fout.write(answer)
RECENT COMMENT