1003 - Baze1: Difference between revisions
No edit summary |
No edit summary |
||
Line 61: | Line 61: | ||
'''110(2) = 6 | '''110(2) = 6 | ||
213(5) = 58 | 213(5) = 58 | ||
6 + 58 = 64''' | 6 + 58 = 64''' |
Revision as of 16:16, 2 January 2024
Cerinţa
Se dau două numere b1 b2, reprezentând două baze de numeraţie şi două şiruri de cifre x y, reprezentând două numere: x în baza b1, y în baza b2. Determinaţi suma numerelor x şi y în baza 10.
Date de intrare
Fișierul de intrare baze1in.txt conține pe prima linie numerele b1 b2, iar pe a doua linie cele două şiruri de cifre cu semnificaţia de mai sus.
Date de ieșire
Fișierul de ieșire baze1out.txt va conține pe prima linie numărul S, reprezentând suma dintre x şi y.
Restricţii şi precizări
- 2 ⩽ b1,b2 ⩽ 10
- reprezentările în baza 10 ale lui x, y şi suma lor nu depăşesc 2 000 000 000
Exemplul 1
- baze1in.txt
2 5 110 213
- baze1out.txt
Datele de intrare corespund restrictiilor impuse 64
Exemplu 2
- baze1in.txt
2 5 110 213333333333333333333
- baze1out.txt
Datele de intrare nu corespund restrictiilor impuse
Rezolvare
<syntaxhighlight lang="python" line> def main():
# Deschiderea fișierelor de intrare și ieșire with open('baze1in.txt', 'r') as fin, open('baze1out.txt', 'w') as fout: # Citirea bazelor și a numerelor din fișierul de intrare b1, b2 = map(int, fin.readline().strip().split()) x, y = fin.readline().strip().split()
# Verifică dacă numerele respectă restricțiile if any(len(numar) > 10 for numar in [x, y]): fout.write("Datele de intrare nu corespund restrictiilor impuse\n") return
fout.write("Datele de intrare corespund restrictiilor impuse\n")
# Conversia numerelor din baza b1 și b2 în baza 10 x_10 = int(x, b1) y_10 = int(y, b2)
# Calcularea sumei numerelor în baza 10 suma_10 = x_10 + y_10
# Afișarea sumei în fișierul de ieșire fout.write(str(suma_10) + '\n')
if __name__ == "__main__":
main()
</syntaxhighlight>
Explicatie
110(2) = 6
213(5) = 58 6 + 58 = 64