3930 - Perioada1
Enunt
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
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
Fişierul de intrare perioada1in.txt conţine pe prima linie numărul natural N.
Date de ieșire
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
- 1 ⩽ N ⩽ 1012
- N şi 10 prime între ele
Exemplu 1
- perioada1in.txt
- 3
- perioada1out.txt
- 1
Exemplu 2
- perioada1in.txt
- 21
- perioada1out.txt
- 6
Exemplu 3
- perioada1in.txt
- 31
- perioada1out.txt
- 15
Exemplu 4
- perioada1in.txt
- 363
- perioada1out.txt
- 22
Exemplu 5
- perioada1in.txt
- 0
- perioada1out.txt
- Numărul N nu respectă restricțiile impuse.
Rezolvare
<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>