0989 - Sum Perm

From Bitnami MediaWiki
Revision as of 08:14, 7 May 2023 by Ardelean Alexandru (talk | contribs) (Pagină nouă: ==Cerința== Se dau <code>n</code> cifre zecimale: <code>a<sub>1</sub></code>, <code>a<sub>2</sub></code>, … , <code>a<sub>n</sub></code>. Determinaţi suma: <code>S = a<sub>1</sub>a<sub>2</sub>...a<sub>n</sub> + a<sub>n</sub>a<sub>1</sub>...a<sub>n-1</sub> + a<sub>2</sub>a<sub>3</sub>...a<sub>n</sub>a<sub>1</sub></code>, în care fiecare termen este obţinut prin permutarea circulară spre dreapta a cifrelor termenului precedent cu o poziţie. ==Date de intrare== Fișieru...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

  • 2 ≤ n ≤ 9

Exemplu 1[edit | edit source]

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

Explicație[edit | edit source]

S=254 + 425 + 542 =1221.

Exemplu 2[edit | edit source]

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

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1">

  1. 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)

</syntaxhighlight>