0989 - Sum Perm

De la Universitas MediaWiki

Cerința

Se dau n cifre zecimale: a1, a2, … , an. Determinaţi suma: S = a1a2...an + ana1...an-1 + a2a3...ana1, în care fiecare termen este obţinut prin permutarea circulară spre dreapta a cifrelor termenului precedent cu o poziţie.

Date de intrare

Fișierul de intrare sumperm.in conține pe prima linie numărul n, iar pe a doua linie cele n cifre separate prin spații.

Date de ieșire

Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."

Pe următoarea linie se va afișa numărul S, reprezentând suma calculată.

În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse."

Restricții și precizări

  • 2 ≤ n ≤ 9

Exemplu 1

Intrare
3
2 5 4
Ieșire
Datele de intrare corespund restricțiilor impuse.
1221

Explicație

S=254 + 425 + 542 =1221.

Exemplu 2

Intrare
1
2 5 4
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare

#0989 Sum Perm
def conditii(n, cifre):
    return n == len(cifre) and 2 <= n <= 9


def sumperm(cifre):
    # Inițializăm suma ca fiind concatenarea cifrelor din vectorul cifre
    suma = int("".join([cif for cif in cifre]))

    # Iterăm vectorul cifre de n ori, unde n = lungimea vectorului-1
    # Îl rotim cu 1 mai puțin decât lungimea sa pentru a nu repeta suma inițială
    for i in range(len(cifre) - 1):
        # append() este o funcție built-in care adaugă un element la sfârșitul unui vector
        # pop() este o funcție built-in care elimină un element dintr-un vector și returnează valoarea sa
        cifre.append(cifre.pop(0))
        # Concatenăm cifrele din vectorul modificat și le convertim la int, apoi le adunăm la suma inițială
        suma += int("".join([cif for cif in cifre]))

    print(suma)


if __name__ == "__main__":
    n = int(input())
    cifre = [x for x in input().split()]
    if not conditii(n, cifre):
        print("Datele de intrare nu corespund restricțiilor impuse.")
    else:
        print("Datele de intrare corespund restricțiilor impuse.")
        sumperm(cifre)