2274 - Limite

From Bitnami MediaWiki
Revision as of 17:12, 6 November 2023 by AntalKrisztian (talk | contribs) (Pagină nouă: == Cerinţa == Se dau '''n''' numere naturale. Afișați tipul de date C++ minim ca număr de octeți permite memorarea fiecărui număr. Dacă un număr încape și în tipul cu semn și în tipul fără semn, se afișează tipul cu semn. == Date de intrare == Fișierul de intrare '''limite.in''' conține numărul '''n''', iar apoi '''n''' numere naturale, separate prin spații. == Date de ieşire == Fișierul de ieșire '''limite.out''' va conține '''n''' șiruri de caract...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa

Se dau n numere naturale. Afișați tipul de date C++ minim ca număr de octeți permite memorarea fiecărui număr. Dacă un număr încape și în tipul cu semn și în tipul fără semn, se afișează tipul cu semn.

Date de intrare

Fișierul de intrare limite.in conține numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieşire

Fișierul de ieșire limite.out va conține n șiruri de caractere, pe n rânduri, reprezentând tipurile de date cerute, dintre char, unsigned char, short, unsigned short, int, unsigned int, long long, unsigned long long.

Restricții și precizări

  • 1 ⩽ n ⩽ 10000
  • cele n numere citite vor fi mai mici sau egale cu 18446744073709551615

Exemplu

limite.in
5
10 18446744073709551615 32767 127 65535


limite.out
char
unsigned long long
short
char
unsigned short

Rezolvare

<syntaxhighlight lang="python" line>

  1. Definim o funcție care determină tipul de date minim necesar pentru a stoca un număr

def tip_date(numar):

   if numar <= 127: # Verificăm dacă numărul poate fi stocat într-un char
       return 'char'
   elif numar <= 255: # Verificăm dacă numărul poate fi stocat într-un unsigned char
       return 'unsigned char'
   elif numar <= 32767: # Verificăm dacă numărul poate fi stocat într-un short
       return 'short'
   elif numar <= 65535: # Verificăm dacă numărul poate fi stocat într-un unsigned short
       return 'unsigned short'
   elif numar <= 2147483647: # Verificăm dacă numărul poate fi stocat într-un int
       return 'int'
   elif numar <= 4294967295: # Verificăm dacă numărul poate fi stocat într-un unsigned int
       return 'unsigned int'
   elif numar <= 9223372036854775807: # Verificăm dacă numărul poate fi stocat într-un long long
       return 'long long'
   # Dacă numărul este mai mare, atunci trebuie să fie stocat într-un unsigned long long
   else:
       return 'unsigned long long' 
  1. Deschidem fișierul de intrare pentru a citi datele

with open('limite.in', 'r') as intrare:

   n = int(intrare.readline())
   # Citim numerele și le convertim la întregi
   numere = list(map(int, intrare.readline().split()))
  1. Pentru fiecare număr, determinăm tipul de date minim și îl adăugăm într-o listă

tipuri = [tip_date(numar) for numar in numere]

  1. Deschidem fișierul de ieșire pentru a scrie rezultatele

with open('limite.out', 'w') as iesire:

   iesire.write('\n'.join(tipuri)) # Scriem tipurile de date în fișierul de ieșire, fiecare pe o linie nouă

</syntaxhighlight>