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
2357 - escape
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!
Pentru că toți elevii clasei a VI-a s-au hotărât să meargă la EscapeRoom, diriginta a repartizat fiecărui elev un număr. Fiind mulți elevi, ei vor intra în două serii astfel: dacă numărul primit este prim, atunci elevul intră în '''seria 1''', altfel elevul intră în '''seria 2'''. Numărul camerei în care intră elevul este cifra de control obținută din numărul primit de fiecare elev în parte (cifra de control a unui număr se obține efectuând suma cifrelor sale, apoi suma cifrelor acestei sume și așa mai departe, până când se obține un număr formată dintr-o singură cifră). În funcție de timpul de evadare, elevul are un punctaj reprezentat de un număr cu exact două cifre. La numărul primit, elevul lipește punctajul obținut și formează un cod pe care la sfârșitul activității îl transmite doamnei diriginte. Exemplu: elevul primește numărul <code>191</code>; numărul este prim, deci elevul va intra în '''seria 1''', iar numărul camerei este <code>2</code> (<code>1 + 9 + 1 = 11</code>, <code>1 + 1 = 2</code> ); punctajul obținut de elev este <code>60</code>, deci codul elevului este <code>19160</code>. = Cerința = Fiind dat numărul natural <code>n</code>, reprezentând numărul de elevi și cele <code>n</code> coduri primite de doamna dirigintă, să se determine: (1) Punctajul maxim obținut de o cameră în prima serie și punctajul maxim obținut de o cameră în a doua serie (punctajul camerei este egal cu suma punctajelor elevilor care au fost în camera respectivă în aceeași serie). (2) Indicii camerelor vizitate, în ordinea descrescătoare a numărului de elevi care le-au vizitat, din ambele serii, la un loc. = Date de intrare = Fișierul de intrare <code>escape.in</code> conţine pe prima linie, separate printr-un spațiu, numărul cerinței <code>c</code> și numărul natural <code>n</code>, reprezentând numărul de elevi. Pe cea de a doua linie sunt cele <code>n</code> coduri, separate prin câte un spațiu, coduri formate de fiecare elev, la sfârșitul activității = Date de ieșire = Fișierul de ieșire <code>escape.out</code> va conține - pentru cerința 1: punctajul maxim obținut de o cameră în '''seria 1''' și punctajul maxim obținut de o cameră în '''seria 2''', separate prin câte un spațiu, pe aceeași linie; - pentru cerința 2: indicii camerelor vizitate, pe același rând, separate prin câte un spațiu, în ordinea descrescătoare a numărului de elevi care le-au vizitat în ambele serii la un loc; pentru camere vizitate de același număr de elevi, se vor afișa indicii camerelor în ordine crescătoare. = Exemplul 1: = <code>escape.in</code> 1 6 10190 1450 100450 1120350 22020 13017 <code>escape.out</code> 90 100 = Restricții și precizări = * <code>1 < n ≤ 1.000.000</code> * <code>100 ≤ codurile ≤ 1.000.000</code> * pot intra mai mulți elevi în aceeași cameră * pentru <code>c = 1</code> se va rezolva doar '''cerința 1''' și se acordă <code>40</code> de puncte; pentru <code>c = 2</code> se va rezolva doar '''cerința 2''' și se acordă <code>50</code> de puncte; * În concurs s-au acordat <code>10</code> puncte din oficiu. Aici se acordă <code>10</code> puncte pentru exemple. === Explicație === Cerința este <code>1</code> și avem <code>6</code> coduri. În '''seria 1''' este vizitată doar camera <code>2</code> și punctajul este <code>90</code>; în '''seria 2''' sunt vizitate camerele <code>4</code> cu punctaj <code>37</code> ( <code>20 + 17</code> ), camera <code>5</code> cu punctaj <code>100</code> ( <code>50 + 50</code> ) și camera <code>7</code> cu punctaj <code>50</code>. == Încărcare soluție == === Lipește codul aici === <syntaxhighlight lang="python" line="1"> import math fp = [0] * 10 f = [0] * 10 ciur = [0] * 1000001 d = 0 cam = [0] * 10 v = [0] * 10 x = 0 j = 0 y = 0 punctaj = 0 pmax1 = 0 pmax2 = 0 c = 0 ciur[0] = 1 ciur[1] = 1 for d in range(2, 1001): for j in range(d * d, 1000001, d): ciur[j] = 1 for i in range(1, 10): v[i] = i c, n = map(int, input().split()) for i in range(1, n + 1): x = int(input()) punctaj = x % 100 x = x // 100 y = x % 9 if y == 0: y = 9 cam[y] += 1 if ciur[x] == 0: fp[y] += punctaj else: f[y] += punctaj if c == 1: for i in range(1, 10): if fp[i] > pmax1: pmax1 = fp[i] for i in range(1, 10): if f[i] > pmax2: pmax2 = f[i] print(pmax1, pmax2) else: for i in range(1, 9): for j in range(i + 1, 10): if cam[i] < cam[j]: cam[i], cam[j] = cam[j], cam[i] v[i], v[j] = v[j], v[i] elif cam[i] == cam[j] and v[i] > v[j]: v[i], v[j] = v[j], v[i] for i in range(1, 10): if cam[i] != 0: print(v[i], end=' ') </syntaxhighlight>
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