0262 - Intervale 1: Difference between revisions
Pagină nouă: == Cerinta == Se dă un șir de n numere reale, în ordine strict crescătoare. Să se determine un număr natural x, cu proprietatea că în orice interval deschis având drept capete oricare două valori din șir se află cel puțin x numere întregi. == Date de intrare == Fişierul de intrare intervale1.txt conţine pe prima linie numărul n; urmează n numere reale, în ordine strict crescătoare, separate prin spaţii, reprezentând elementele şirului, ce pot fi disp... |
No edit summary |
||
Line 1: | Line 1: | ||
== Cerinta == | == Cerinta == | ||
Se dă un șir de n numere reale, în ordine strict crescătoare. Să se determine un număr natural x, cu proprietatea că în orice interval deschis având drept capete oricare două valori din șir se află cel puțin x numere întregi. | Se dă un șir de '''n''' numere reale, în ordine strict crescătoare. Să se determine un număr natural '''x''', cu proprietatea că în orice interval deschis având drept capete oricare două valori din șir se află cel puțin '''x''' numere întregi. | ||
== Date de intrare == | == Date de intrare == | ||
Fişierul de intrare | Fişierul de intrare '''intervale1in.txt''' conţine pe prima linie numărul '''n'''; urmează n numere reale, în ordine strict crescătoare, separate prin spaţii, reprezentând elementele şirului, ce pot fi dispuse pe mai multe linii. | ||
== Date de iesire == | == Date de iesire == | ||
Fişierul de ieşire | Fişierul de ieşire '''intervale1out.txt''' va conţine pe prima linie numărul '''x'''. | ||
== Restrictii si precizari == | == Restrictii si precizari == | ||
*1 | *1 ⩽ n ⩽ 100.000 | ||
*numerele reale din fișierul de intrare au valoarea absolută mai mică decât 100.000.000 | *numerele reale din fișierul de intrare au valoarea absolută mai mică decât '''100.000.000''' | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; | ;intervale1in.txt | ||
:6 | :6 | ||
:3.5 5.1 9.2 16 20.33 100 | :3.5 5.1 9.2 16 20.33 100 | ||
; | ;intervale1out.txt | ||
:Datele introduse corespund restrictiilor impuse | |||
:2 | :2 | ||
== Exemplul 2 == | == Exemplul 2 == | ||
; | ;intervale1in.out | ||
:6 | :6 | ||
:100 20.33 16 9.2 5.1 3.5 | :100 20.33 16 9.2 5.1 3.5 | ||
:Datele introduse nu corespund restrictiilor impuse | |||
Revision as of 11:38, 27 December 2023
Cerinta
Se dă un șir de n numere reale, în ordine strict crescătoare. Să se determine un număr natural x, cu proprietatea că în orice interval deschis având drept capete oricare două valori din șir se află cel puțin x numere întregi.
Date de intrare
Fişierul de intrare intervale1in.txt conţine pe prima linie numărul n; urmează n numere reale, în ordine strict crescătoare, separate prin spaţii, reprezentând elementele şirului, ce pot fi dispuse pe mai multe linii.
Date de iesire
Fişierul de ieşire intervale1out.txt va conţine pe prima linie numărul x.
Restrictii si precizari
- 1 ⩽ n ⩽ 100.000
- numerele reale din fișierul de intrare au valoarea absolută mai mică decât 100.000.000
Exemplul 1
- intervale1in.txt
- 6
- 3.5 5.1 9.2 16 20.33 100
- intervale1out.txt
- Datele introduse corespund restrictiilor impuse
- 2
Exemplul 2
- intervale1in.out
- 6
- 100 20.33 16 9.2 5.1 3.5
- Datele introduse nu corespund restrictiilor impuse
Rezolvare
<syntaxhighlight lang="python3" line="1"> def cmmdc(a, b):
while b: a, b = b, a % b return a
def gaseste_x(șir):
diferențe = [șir[i + 1] - șir[i] for i in range(len(șir) - 1)]
x = diferențe[0] for diferența in diferențe[1:]: x = cmmdc(x, diferența)
return x
def main():
with open("intervale1.txt", "r") as f_in: # Citim lungimea șirului n = int(f_in.readline())
# Citim șirul de numere reale sir = [float(f_in.readline()) for _ in range(n)]
# Calculăm x folosind diferențele dintre elemente rezultat = gaseste_x(sir)
# Scriem rezultatul în fișierul de ieșire with open("intervale1.txt", "w") as f_out: f_out.write(str(rezultat) + "\n")
if __name__ == "__main__":
main()
</syntaxhighlight>