3930 - Perioada1
Enunt[edit | edit source]
Fie N un număr natural cu proprietatea că (N, 10) = 1. Să se determine lungimea perioada T a fracţiei zecimale periodice simple 1N
Cerința[edit | edit source]
Să se scrie un program care citeşte numărul natural N şi determină numărul T cu semnificaţia de mai sus.
Date de intrare[edit | edit source]
Fişierul de intrare perioada1in.txt conţine pe prima linie numărul natural N.
Date de ieșire[edit | edit source]
Fişierul de ieşire perioada1out.txt va conţine pe prima linie numărul T cu semnificaţia de mai sus.
Restricții și precizări[edit | edit source]
- 1 ⩽ N ⩽ 1012
- N şi 10 prime între ele
Exemplu 1[edit | edit source]
- perioada1in.txt
- 3
- perioada1out.txt
- 1
Exemplu 2[edit | edit source]
- perioada1in.txt
- 21
- perioada1out.txt
- 6
Exemplu 3[edit | edit source]
- perioada1in.txt
- 31
- perioada1out.txt
- 15
Exemplu 4[edit | edit source]
- perioada1in.txt
- 363
- perioada1out.txt
- 22
Exemplu 5[edit | edit source]
- perioada1in.txt
- 0
- perioada1out.txt
- Numărul N nu respectă restricțiile impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 3930 - Perioada1
def find_period(N):
remainder = 1 % N seen_remainders = set() position = 0
while remainder not in seen_remainders: seen_remainders.add(remainder) position += 1 remainder = (remainder * 10) % N
return position
def main(input_file, output_file):
try: with open(input_file, 'r') as file: N = int(file.readline().strip()) if 1 <= N <= 10**12 and N % 10 != 0: T = find_period(N) with open(output_file, 'w') as output: output.write(str(T) + '\n') else: print("Numărul N nu respectă restricțiile impuse.") except Exception as e: print(f"Nu au fost respectate cerințele impuse: {str(e)}")
if __name__ == "__main__":
main("perioada1in.txt", "perioada1out.txt")
</syntaxhighlight>