Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
0493 - Constr
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
Sursa: [https://www.pbinfo.ro/probleme/493/constr 0493 - Constr] ---- == Cerinţa == Se dă un vector '''x''' cu '''n''' elemente, numere naturale. Să se construiască un alt vector, '''y''', cu proprietatea că '''y[i]''' este egal cu restul împărțirii lui '''x[i]''' la suma cifrelor lui '''x[i]'''. == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale, reprezentând elementele vectorului. == Date de ieșire == Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Datele sunt introduse corect."''', apoi pe un rând nou afișează '''elementele vectorului y''', separate prin exact un spațiu. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Datele nu corespund restricțiilor impuse."'''. == Restricţii şi precizări == * 1 ⩽ '''n''' ⩽ 200 * elementele vectorului vor fi cuprinse între '''1''' și '''1.000.000.000''' == Exemple == ===Exemplul 1=== ; Intrare : 6 : 50 1815 15 289 35 40 ; Ieșire : Datele sunt introduse corect. : 0 0 3 4 3 0 ===Exemplul 2=== ; Intrare : 5 : 10 2 -3 4 5 ; Ieșire : Datele nu corespund restricțiilor impuse. <br> == Rezolvare == <syntaxhighlight lang="python" line> # 0493 def construirea_vectorului_y(x, n): y = [] for i in range(n): a, s = x[i], 0 while a: s += a % 10 a //= 10 y.append(x[i] % s) for i in range(n): print(y[i], end=" ") def citire_conform_restrictiilor(x, n): if n < 1 or n > 200: print("Datele nu corespund restricțiilor impuse.") exit() for elem in x: if elem < 0 or elem > 1000000000: print("Datele nu corespund restricțiilor impuse.") exit() if n != len(x): print("Datele nu corespund restricțiilor impuse.") exit() print("Datele sunt introduse corect.") if __name__ == '__main__': n = int(input()) x = list(map(int, input().split())) citire_conform_restrictiilor(x, n) construirea_vectorului_y(x, n) </syntaxhighlight> == Explicație rezolvare == Programul începe prin definirea unei funcții numite '''construirea_vectorului_y(x, n)''', care primește două argumente: vectorul x și numărul n. În această funcție, se creează un vector gol y, în care vom adăuga ulterior elemente. Se parcurge vectorul x folosind un ciclu for. La fiecare iterație, se extrage elementul a de pe poziția i din vectorul x și se inițializează o variabilă s cu valoarea 0. Apoi, se parcurge cifrele din elementul a folosind un alt ciclu while. La fiecare iterație a acestui ciclu, se adaugă la variabila s ultima cifră a lui a, obținută prin operarea modulo 10, și se împarte a la 10, eliminându-se astfel ultima cifră. Aceasta se repetă până când a devine 0, moment în care suma cifrelor elementului a este acumulată în variabila s. Apoi, se adaugă la vectorul y valoarea a % s, care reprezintă restul împărțirii elementului a la suma cifrelor acestuia. Aceasta se realizează folosind metoda append() a listelor în Python. La final, se parcurge vectorul y și se afișează elementele pe ecran, separate prin spațiu, folosind un alt ciclu for și funcția print() cu argumentul end=" ", care specifică separatorul dintre elemente ca fiind spațiul.<br> În continuare, programul definește o funcție numită '''citire_conform_restrictiilor(x, n)''', care primește două argumente: vectorul x și numărul n. Această funcție verifică dacă n și elementele din vectorul x respectă anumite restricții. Dacă n este mai mic decât 1 sau mai mare decât 200, sau dacă oricare dintre elementele din vectorul x este mai mic decât 0 sau mai mare decât 1000000000, sau dacă n nu este egal cu lungimea vectorului x, atunci se afișează "Datele nu corespund restricțiilor impuse." și programul se încheie folosind funcția exit(). Dacă toate restricțiile sunt respectate, se afișează "Datele sunt introduse corect." și se continuă programul.<br> În secțiunea '''if __name__ == '__main__':''', se citește numărul n de la intrare folosind funcția input() și se convertește la tipul întreg folosind int(). Apoi, se citește vectorul x de la intrare, care conține n numere întregi separate prin spațiu, și se convertește într-o listă de întregi folosind funcția map() împreună cu int() pentru a aplica conversia la fiecare element din input-ul citit. Apoi, se apelează funcția citire_conform_restrictiilor(x, n) pentru a verifica restricțiile impuse asupra datelor citite. Dacă restricțiile sunt respectate, se apelează funcția construirea_vectorului_y(x, n) pentru a construi și afișa vectorul y, conform problemei.
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width