1003 - Baze1: Difference between revisions
Pagină nouă: == 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... |
No edit summary |
||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Cerinţa == | == 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. | 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 == | == 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. | 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. | ||
Line 8: | Line 8: | ||
* '''2 ⩽ b1,b2 ⩽ 10''' | * '''2 ⩽ b1,b2 ⩽ 10''' | ||
* reprezentările în baza '''10''' ale lui '''x''', '''y''' şi suma lor nu depăşesc '''2 000 000 000''' | * reprezentările în baza '''10''' ale lui '''x''', '''y''' şi suma lor nu depăşesc '''2 000 000 000''' | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; baze1in.txt | ; baze1in.txt | ||
2 5 | |||
2 5 | 110 213 | ||
110 213 | |||
; baze1out.txt | ; baze1out.txt | ||
Datele de intrare corespund restrictiilor impuse | |||
Datele de intrare corespund restrictiilor impuse | 64 | ||
64 | |||
== Exemplu 2 == | == Exemplu 2 == | ||
; baze1in.txt | ; baze1in.txt | ||
2 5 | |||
2 5 | 110 213333333333333333333 | ||
110 213333333333333333333 | |||
; baze1out.txt | ; baze1out.txt | ||
Datele de intrare nu corespund restrictiilor impuse | |||
Datele de intrare nu corespund restrictiilor impuse | |||
Line 40: | Line 30: | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def main(): | 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: | ||
b1, b2 = map(int, fin.readline().strip().split()) | b1, b2 = map(int, fin.readline().strip().split()) | ||
x, y = 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> | </syntaxhighlight> | ||
== Explicatie == | == Explicatie == | ||
'''110(2) = 6''' | |||
'''110(2) = 6 | '''213(5) = 58''' | ||
213(5) = 58 | '''6 + 58 = 64''' | ||
6 + 58 = 64''' |
Latest revision as of 12:34, 3 January 2024
Cerinţa[edit | edit source]
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[edit | edit source]
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[edit | edit source]
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[edit | edit source]
- 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[edit | edit source]
- baze1in.txt
2 5 110 213
- baze1out.txt
Datele de intrare corespund restrictiilor impuse 64
Exemplu 2[edit | edit source]
- baze1in.txt
2 5 110 213333333333333333333
- baze1out.txt
Datele de intrare nu corespund restrictiilor impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def main():
with open('baze1in.txt', 'r') as fin, open('baze1out.txt', 'w') as fout: 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[edit | edit source]
110(2) = 6 213(5) = 58 6 + 58 = 64