1815 - Unghi

From Bitnami MediaWiki
Revision as of 13:30, 25 October 2023 by AntalKrisztian (talk | contribs) (Pagină nouă: La geometrie, domnul profesor de matematică le-a vorbit elevilor săi despre unghiuri. Pentru a fi sigur că aceștia au înțeles noțiunile predate, le-a dat o listă cu n probleme. == Cerinţa == Fiind date numărul de ore în variabila '''h''' și numărul de minute în variabila '''m''', să se determine câte grade avea unghiul dintre orarul și minutarul unui ceas clasic, la ora '''h''' şi '''m''' minute? == Date de intrare == Fișierul '''unghi.in''' va conține pe...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

La geometrie, domnul profesor de matematică le-a vorbit elevilor săi despre unghiuri. Pentru a fi sigur că aceștia au înțeles noțiunile predate, le-a dat o listă cu n probleme.

Cerinţa

Fiind date numărul de ore în variabila h și numărul de minute în variabila m, să se determine câte grade avea unghiul dintre orarul și minutarul unui ceas clasic, la ora h şi m minute?

Date de intrare

Fișierul unghi.in va conține pe prima linie un număr natural n, reprezentând numărul de probleme date ca temă, iar pe a doua linie, două numere h și m, separate printr-un spațiu, cu semnificațiile din cerință.

Date de ieşire

Fișierul unghi.out va conține pe câte o linie numărul de grade corespunzător unghiului format de orar și minutar, pentru fiecare dintre cele n probleme din temă.

Restricții și precizări

  • n este număr natural, 1 ⩽ n ⩽ 100
  • h este număr natural, 0 ⩽ h ⩽ 24h
  • m este număr natural, 0 ⩽ m ⩽ 60
  • Dimensiunea unui unghi se măsoară în grade. Un cerc are 360 de grade.

Exemplu

unghi.in
3
8 20
1 10
5 15
unghi.out
130
25
67.5

Rezolvare

<syntaxhighlight lang="python" line>

  1. Deschidem fisierul de intrare

with open('unghi.in', 'r') as intrare:

   n = int(intrare.readline())
   # Initializam o lista pentru a stoca rezultatele
   rezultate = []
   # Parcurgem fiecare problema
   for _ in range(n):
       # Citim ora si minutul pentru fiecare problema
       h, m = map(int, intrare.readline().split())
       if h == 12:
           h = 0
       # Daca minutul este 60, il setam la 0 si incrementam ora cu 1
       if m == 60:
           m = 0
           h += 1
       # Calculam pozitia orarului in grade
       ora = 0.5 * (h * 60 + m)
       # Calculam pozitia minutarului in grade
       minut = 6 * m
       # Calculam unghiul absolut dintre orar si minutar
       unghi = abs(ora - minut)
       # Daca unghiul este mai mare de 180 de grade, folosim complementul sau in cerc (360 - unghi)
       unghi = min(360 - unghi, unghi)
       # Adaugam unghiul calculat in lista de rezultate
       rezultate.append(unghi)
  1. Deschidem fisierul de iesire

with open('unghi.out', 'w') as iesire:

   # Scriem fiecare unghi calculat pe cate o linie noua in fisierul de iesire
   for unghi in rezultate:
       iesire.write(str(unghi) + '\n')

</syntaxhighlight>