Problemi 070

Kërkesa

PANGRAM quhet një tekst që i përdor të paktën një herë të gjitha shkronjat e alfabetit anglisht.

Në një dokument të vjetër është shkruar diçka. Nëse teksti nuk është PANGRAM ne mund të blejmë disa shkronja për ta plotësuar. Nqs dimë edhe koston e çdo shkronje, sa është sasia më e vogël e parave që duhet të shpenzojmë për ta kthyer tekstin në PANGRAM?

Referenca: https://www.codechef.com/problems/MATPAN

Shembull

$ cat input.txt
2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
abcdefghijklmopqrstuvwz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
thequickbrownfoxjumpsoverthelazydog

$ python3 prog.py < input.txt
63
0

Në rastin e parë mungojnë shkronjat n (çmimi 14), x (24) dhe y (25). Kështu që shuma që duhet të shpenzojmë është 14+24+25=63.

Në rastin e dytë nuk mungon asnjë nga shkronjat e alfabetit, kështu që përgjigja është 0.

Zgjidhja

for _ in range(int(input())):
    prices = [int(i) for i in input().split()]
    text = input()
    letters = [0 for i in range(26)]
    for l in text:
        letters[ord(l) - ord('a')] += 1
    cost = 0
    for i in range(26):
        if letters[i] == 0:
            cost += prices[i]
    print(cost)

Sqarime

Funksioni ord() jep kodin e një shkronje në tabelën ASCII. Kurse ord(x) - ord('a') i kthen shkronjat në një indeks që fillon nga 0. Programi i kalon me radhë shkronjat e tekstit dhe numëron sa herë përsëritet çdo shkronjë. Në fund kontrollon se cilat shkronja përsëriten 0 herë dhe i shton çmimet e tyre në kosto.

Detyra

Në një dyqan çokollatash shkon një turist. Shitësi dhe turisti nuk e dinë gjuhën e njëri-tjetrit, por turisti tregon me dorë një lloj çokollatash dhe i jep shitësit disa kartëmonedha. Duke ditur çmimin e një çokollate shitësi mund ta marrë me mend se sa copë do që të blejë turisti. Por nqs duke hequr një prej kartëmonedhave mund të blihet përsëri i njëjti numër çokollatash, atere ky është një rast i paqartë dhe shitësi nuk di çfarë të bëjë, kështu që ia kthen lekët mbrapsht turistit.

Bëni një program që merr çmimin e një çokollate dhe kartëmonedhat që jep turisti dhe gjen se sa copë çokollata do që të blejë turisti. Nëse rasti është i paqartë programi duhet të nxjerrë -1.

Referenca: https://www.codechef.com/problems/BUYING2

Shembull

$ cat input.txt
3
4 7
10 4 8 5
1 10
12
2 10
20 50

$ python3 prog.py < input.txt
-1
1
7

Në rastin e parë, sasia gjithsej e parave është 27, dhe meqë çmimi është 7, turisti mund të marrë vetëm 3 copë. Por nqs nuk do kishte dhënë kartëmonedhën 5 përsëri do merrte 3 copë. Kështu që është rast i paqartë.

Në rastin e dytë sasia e parave është 12, çmimi 10, kështu që mund të marrë 1 çokollatë.

Në rastin e tretë sasia e parave është 20+50, çmimi 10, mund të marrë 7 çokollata.