0945 - Baze
De la Universitas MediaWiki
Cerință
Se dă un număr n scris în baza b. Să se afișeze scrierea acestuia în baza c.
Date de intrare
Programul citește de la tastatură numerele n, b și c separate prin spații.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul va afișa pe ecran scrierea numărului n în baza c. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
Restricții de precizări
- 2 ⩽ b, c ⩽ 10
- numărul n este natural si are cel mult nouă cifre
- rezolvarea acestei probleme necesită utilizarea tablourilor sau a altor forme de memorare a unui număr variabil de valori.
Exemplul 1
- Intrare
- 2013
- 4
- 7
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 252
Rezolvare
Rezolvare ver. 1
def validare(n, b, c):
return all(digit.isdigit() and int(digit) < int(b) for digit in n) and 0 <= int(n,
int(b)) <= 999999999 and 2 <= int(b) <= 10 and 2 <= int(c) <= 10
def baze(n, b, c):
n_baza_10 = int(n, b)
n_baza_c = format(n_baza_10, '0' + str(len(n)) + 'd')
base_c_digits = "0123456789abcdefghijklmnopqrstuvwxyz"[:c]
base_c_num = ""
remainder = n_baza_10
while remainder > 0:
digit = base_c_digits[remainder % c]
base_c_num = digit + base_c_num
remainder //= c
print("Numărul {} în baza {} este {}".format(n, c, int(base_c_num)))
if __name__ == '__main__':
n = input("Introdu numărul n: ")
b = input("Introdu baza b: ")
c = input("Introdu baza c: ")
if validare(n, b, c):
b, c = int(b), int(c)
print("Datele introduse corespund restricțiilor impuse.")
baze(n, b, c)
else:
print("Datele introduse nu corespund restricțiilor impuse.")