Rezultati

Up. imeNalogaJezikRezultatČas oddaje
cimetovipolzki-2017 Pasavci Python 3 100/100OK 11. maj '17 @ 18:05

Test Točke Porabljen spomin Porabljen čas Status
#1 5/5 8,641 MiB 0,000 s OK
#2 5/5 8,617 MiB 0,000 s OK
#3 5/5 8,613 MiB 0,000 s OK
#4 5/5 8,621 MiB 0,000 s OK
#5 5/5 8,664 MiB 0,000 s OK
#6 5/5 8,625 MiB 0,000 s OK
#7 5/5 8,695 MiB 0,000 s OK
#8 5/5 8,613 MiB 0,000 s OK
#9 6/6 8,695 MiB 0,000 s OK
#10 6/6 8,727 MiB 0,870 s OK
#11 6/6 8,590 MiB 0,000 s OK
#12 6/6 8,598 MiB 0,000 s OK
#13 6/6 8,590 MiB 0,000 s OK
#14 6/6 8,590 MiB 0,000 s OK
#15 6/6 8,590 MiB 0,000 s OK
#16 6/6 8,602 MiB 0,000 s OK
#17 6/6 8,590 MiB 0,000 s OK
#18 6/6 8,695 MiB 0,748 s OK

Ocenjevani program (naloga3.py):
iskani_niz = input()
n = len(iskani_niz)

def prestej(niz):
    count = 0
    for i in range(0, len(niz)-n+1):
        if niz[i:i+n] == iskani_niz:
            count += 1

    return count

def pokrajsaj(niz):
    if len(niz) > n-1:
        return (niz[:n-1], niz[-n+1:])
    return (niz, niz)

def zdruzi(a, b):
    r0, r1 = a[0], b[1]
    if len(r0) < n - 1:
        r0 = (r0 + b[0])[:n-1]
    if len(r1) < n - 1:
        r1 = (a[1] + r1)[-n+1:]
    return r0, r1
m = 10**9 + 7
a = input()
b = input()

k = int(input())
rezultati = [0 for i in range(k+2)]
nizi = ["" for i in range(k+2)]

rezultati[0] = prestej(a)
nizi[0] = pokrajsaj(a)

rezultati[1] = prestej(b)
nizi[1] = pokrajsaj(b)

for i in range(2, k+2):
    prvi, drugi = map(int, input().split(" "))
    skupaj = nizi[prvi-1][1] + nizi[drugi-1][0]
    rezultati[i] = (prestej(skupaj) + rezultati[prvi-1] + rezultati[drugi-1]) % m
    nizi[i] = zdruzi(nizi[prvi-1], nizi[drugi-1])


print(rezultati[-1])