2274 - Limite
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>
- 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'
- 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()))
- 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]
- 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>