Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
1112 - Puteri4
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Enunt == Nu e un secret pentru nimeni faptul că Mireluş se antrenează în timpul liber cu probleme de algoritmică. De curând a aflat că un număr natural '''N''', pentru care există două numere naturale nenule '''A''' şi '''B''' (B>1) astfel încât '''N = A^B''', se numeşte '''putere'''. Mireluş şi-a propus să determine numărul de puteri din intervalul '''[X, Y]''', unde '''X şi Y''' sunt numere naturale nenule. Cum probabil v-aţi imaginat deja, Mireluş nu a reuşit să rezolve această problemă şi a decis să ceară ajutorul Olimpiei D’Info. Pentru a fi sigur că nici ea nu greşeşte, i-a dat un set de intervale şi i-a cerut să determine pentru fiecare interval numărul de puteri corespunzător. == Cerință == Dându-se numărul de intervale '''T''' şi pentru fiecare din cele T intervale cele două extremităţi, determinaţi numărul de '''puteri''' corespunzător fiecărui interval dat de Mireluş Olimpiei. == Date de intrare == Fișierul de intrare '''puteri4in.txt''' conține pe prima linie numărul de intervale '''T''', iar pe fiecare din următoarele '''T''' linii câte 2 numere naturale nenule '''X şi Y''', separate prin exact un spaţiu, reprezentând extremităţile intervalelor. == Date de ieșire == Fișierul de ieșire '''puteri4out.txt''' va conține '''T''' linii. Fiecare linie va conţine numărul de puteri care aparţin intervalului corespunzător din fişierul de intrare. == Restricții și precizări == *'''1 ⩽ T ⩽ 131'''. *'''1 ⩽ X ⩽ Y ⩽ 10^18.''' *Intervalul '''[X, Y]''' conţine şi numerele X şi Y. *Pentru 10% din teste '''Y ⩽ 5000.''' *Pentru alte 25% din teste '''Y ⩽ 100 000'''. *Pentru alte 20% din teste '''Y ⩽ 10 000 000'''. == Exemplu 1 == ;'''puteri4in.txt''' :1 :1 36 ;'''puteri4out.txt''' :9 :Datele corespund <br> == Exemplu 2 == ;'''puteri4in.txt''' :0 :0 0 ;'''puteri4out.txt''' :Datele nu corespund <br> == Rezolvare == <syntaxhighlight lang="python" line> #1112 - Puteri4 def este_putere(numar): # Verifică dacă un număr este putere for baza in range(2, int(numar ** 0.5) + 1): exponent = 2 putere = baza ** exponent while putere <= numar: if putere == numar: return True exponent += 1 putere = baza ** exponent return False def numar_puteri_in_interval(X, Y): numar_puteri = 1 for numar in range(X, Y + 1): if este_putere(numar): numar_puteri += 1 return numar_puteri def main(): try: with open("puteri4in.txt", "r") as fin: T = int(fin.readline().strip()) intervale = [list(map(int, fin.readline().strip().split())) for _ in range(T)] except FileNotFoundError: print("Fișierul puteri4in.txt nu a fost găsit.") return except ValueError: print("Datele din fișierul de intrare nu sunt corecte.") return try: with open("puteri4out.txt", "w") as fout: for interval in intervale: numar_puteri = numar_puteri_in_interval(interval[0], interval[1]) fout.write(str(numar_puteri) + "\n") print("Datele corespund.") except IOError: print("Nu s-a putut scrie în fișierul de ieșire.") if __name__ == "__main__": main() </syntaxhighlight>
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width