1663 - Vali: Difference between revisions

From Bitnami MediaWiki
Andrada378 (talk | contribs)
Pagină nouă: == Enunț == De Ziua Îndrăgostiţilor Vali a hotărât să organizeze o petrecere mare pe stadionul oraşului. La petrecere pot participa numai şi numai îndrăgostiţi care şi-au procurat biletele din timp. Biletele oricărui cuplu sunt aproape identice. Ele au proprietatea că numărul de serie are prima cifră 1 pentru băieţi şi *prima cifră 2 pentru fete, continuarea celor două numere este identică. De exemplu, dacă prietenul are biletul cu numărul 134, atunci...
Tag: visualeditor
 
Andrada378 (talk | contribs)
No edit summary
Tag: visualeditor
 
Line 27: Line 27:
Dacă valoarea lui p este 2, se va rezolva numai punctul b) din cerinţă. În acest caz, în fişierul de ieșire se va scrie un număr natural, reprezentând numărul de pe biletul lui Vali.
Dacă valoarea lui p este 2, se va rezolva numai punctul b) din cerinţă. În acest caz, în fişierul de ieșire se va scrie un număr natural, reprezentând numărul de pe biletul lui Vali.


Restricţii şi precizări
== Restricţii şi precizări ==
 
* 3 ≤ n ≤ 299999
* 3 ≤ n ≤ 299999
* pentru 30% din teste avem p=1, iar pentru 70% din teste avem p=2;
* pentru 30% din teste avem p=1, iar pentru 70% din teste avem p=2;
Line 34: Line 33:
* pentru 90% din teste biletul lui Vali nu este falsificat, iar pentru 10% din teste numărul biletului lui Vali coincide cu numărul unui alt bilet xeroxat.
* pentru 90% din teste biletul lui Vali nu este falsificat, iar pentru 10% din teste numărul biletului lui Vali coincide cu numărul unui alt bilet xeroxat.


Exemple
== Exemple ==
 
'''valiin.txt'''
'''valiin.txt'''



Latest revision as of 17:25, 3 January 2024

Enunț[edit]

De Ziua Îndrăgostiţilor Vali a hotărât să organizeze o petrecere mare pe stadionul oraşului. La petrecere pot participa numai şi numai îndrăgostiţi care şi-au procurat biletele din timp. Biletele oricărui cuplu sunt aproape identice. Ele au proprietatea că numărul de serie are prima cifră 1 pentru băieţi şi *prima cifră 2 pentru fete, continuarea celor două numere este identică. De exemplu, dacă prietenul are biletul cu numărul 134, atunci prietena lui are biletul 234, iar dacă prietena are biletul 2234567890, atunci prietenul ei are biletul 1234567890.

Bineînțeles, că și Vali are bilet și speră să câștige un cadou. Biletul lui Vali are aceeași proprietate ca celelalte bilete, cu o singură excepție: Vali nu va participa cu pereche la acest eveniment.

Pe parcursul desfășurării petrecerii, biletele de intrare vor avea şi rolul de bilet de tombolă. Acestea vor fi introduse într-o urnă şi câteva dintre ele vor fi extrase, iar norocoşii proprietari ai biletelor vor primi cadouri valoroase. Se mai știe că există probabilitatea ca unii participanți să vină la petrecere cu bilete falsificate, având numere identice cu cele de pe un bilet original. Acest fapt se va depista cu ușurință în momentul extragerii.

Cerinţă[edit]

Cunoscând numerele de serie ale tuturor biletelor de intrare la acest eveniment, aflaţi:

a) dacă pe Vali o cheamă Valentina sau îl cheamă Valentin;

b) numărul biletului lui Vali.

Date de intrare[edit]

Fişierul valiin.txt are următoarea structură:

Pe prima linie un număr natural p. Pentru toate testele de intrare, numărul p poate avea doar valoarea 1 sau valoarea 2.

Pe a doua linie un număr natural n, reprezentând numărul de participanţi. Următoarele n linii conţin câte un număr de bilet.

Date de ieşire[edit]

Fişierul valiout.txt are următoarea structură:

Dacă valoarea lui p este 1, se va rezolva numai punctul a) din cerinţă. În acest caz, în fişierul de ieşire se va scrie un singur cuvânt: valentin sau valentina (totul cu litere mici!) , în concordanţă cu numele lui Vali din certificatul de naștere.

Dacă valoarea lui p este 2, se va rezolva numai punctul b) din cerinţă. În acest caz, în fişierul de ieșire se va scrie un număr natural, reprezentând numărul de pe biletul lui Vali.

Restricţii şi precizări[edit]

  • 3 ≤ n ≤ 299999
  • pentru 30% din teste avem p=1, iar pentru 70% din teste avem p=2;
  • pentru 90% din teste numărul biletului nu depășește tipul long (C++) respectiv longint (Pascal), pentru 10% din teste există bilete cu numere până la 17 cifre.
  • pentru 90% din teste biletul lui Vali nu este falsificat, iar pentru 10% din teste numărul biletului lui Vali coincide cu numărul unui alt bilet xeroxat.

Exemple[edit]

valiin.txt

1

5

1345

2649012

15480

2345

1649012

valiout.txt

valentin

Explicație[edit]

Singurul bilet fără pereche este 15480, deci posesorul este un băiat, îl cheamă Valentin (scris cu ‚v’ mic în fişier).

Rezolvare[edit]

<syntaxhighlight lang="python"> def valentin_sau_valentina(bilet):

   if int(bilet[0]) % 2 == 1:
       return "valentin"
   else:
       return "valentina"

def gaseste_bilet_Vali(bilete):

   for i in range(len(bilete)):
       bilet = bilete[i]
       if bilet not in bilete[:i] and bilet not in bilete[i + 1:]:
           return bilet

def main():

   with open("valiin.txt", "r") as file:
       p = int(file.readline().strip())
       n = int(file.readline().strip())
       if not (3 <= n <= 299999):
           print("Numarul de participanti nu respecta restrictia.")
           return
       bilete = [file.readline().strip() for _ in range(n)]
   if p == 1:
       with open("valiout.txt", "w") as file_out:
           file_out.write(valentin_sau_valentina(gaseste_bilet_Vali(bilete)))
   elif p == 2:
       with open("valiout.txt", "w") as file_out:
           file_out.write(gaseste_bilet_Vali(bilete))

if __name__ == "__main__":

   main()

</syntaxhighlight>