1003 - Baze1: Difference between revisions

From Bitnami MediaWiki
No edit summary
Line 30: Line 30:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
def main():
def main():
     # Deschiderea fișierelor de intrare și ieșire
     def main():
     with open('baze1in.txt', 'r') as fin, open('baze1out.txt', 'w') as fout:
     with open('baze1in.txt', 'r') as fin, open('baze1out.txt', 'w') as fout:
         # Citirea bazelor și a numerelor din fișierul de intrare
         # Citirea bazelor și a numerelor din fișierul de intrare
Line 36: Line 36:
         x, y = 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]):
         if any(len(numar) > 10 for numar in [x, y]):
             fout.write("Datele de intrare nu corespund restrictiilor impuse\n")
             fout.write("Datele de intrare nu corespund restrictiilor impuse\n")
Line 43: Line 42:
         fout.write("Datele de intrare corespund restrictiilor impuse\n")
         fout.write("Datele de intrare corespund restrictiilor impuse\n")


        # Conversia numerelor din baza b1 și b2 în baza 10
         x_10 = int(x, b1)
         x_10 = int(x, b1)
         y_10 = int(y, b2)
         y_10 = int(y, b2)


        # Calcularea sumei numerelor în baza 10
         suma_10 = x_10 + y_10
         suma_10 = x_10 + y_10


        # Afișarea sumei în fișierul de ieșire
         fout.write(str(suma_10) + '\n')
         fout.write(str(suma_10) + '\n')



Revision as of 19:50, 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():

   def main():
   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()
       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")
       x_10 = int(x, b1)
       y_10 = int(y, b2)
       suma_10 = x_10 + y_10
       fout.write(str(suma_10) + '\n')


if __name__ == "__main__":

   main()

</syntaxhighlight>

Explicatie

110(2) = 6
213(5) = 58
6 + 58 = 64