2371 - Biliard

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Cerinţa

Avem la dispoziție o masa de biliard dreptunghiulara. O bila pornește din colțul stânga jos al dreptunghiului sub un unghi de 45 grade față de latura de jos a dreptunghiului și lovește latura de sus sau latura din dreapta. Aici ricoșează (pornește spre o altă latură tot sub un unghi de 45 grade față de latura de care s-a lovit). Își continuă drumul până când ajunge într-un colț al dreptunghiului.

Scrieți un program care calculează de câte ori (nrSchimb) mingea își schimbă direcția de mers până când se oprește într-un colț. Punctul de pornire nu se numără.

Date de intrare

Programul citește de la tastatură numerele a și b reprezentând lungimea respectiv lățimea mesei.

Date de ieşire

Dacă datele sunt introduse corect,pe ecran se va afișa :"Datele sunt introduse corect.",apoi pe un rând nou numărul nrSchimb reprezentând valoarea cerută.În cazul contrar,se va afișa pe ecran "Datele nu corespund restricțiilor impuse.".

Restricții și precizări

  • 1 ⩽ a ⩽ b ⩽ 10.000

Exemplu

Intrare
8 3
Ieșire
Datele sunt introduse corect.
9

Explicație

De 4 ori lovește latura de sus, o dată latura din stânga și din dreapta și de 3 ori latura de jos și intră în colțul dreapta-jos.

Rezolvare

#Verificăm dacă datele introduse corespund restricțiilor impuse
def validare_date(a, b):
    if 1 <= a <= 10000 and 1 <= b <= 10000 and 1 <= min(a, b) <= max(a, b) <= 10000 and (max(a, b) - min(a, b)) <= 1000:
        return True
    return False

#Calculăm cel mai mare divizor comun dintre două numere.
def cmmdc(a, b):

    if b == 0:
        return a
    return cmmdc(b, a % b)

if __name__ == '__main__':
    lungime, lățime = map(int, input().split())
    n, m = lungime, lățime
    if validare_date(lungime, lățime):#Dacă datele introduse sunt corecte
        divizor_comun =cmmdc(lungime, lățime)
        # Calculăm cel mai mic multiplu comun al numerelor "lungime" și "lățime"
        cmmmc = (n // divizor_comun) * m
        print("\nDatele sunt introduse corect.\n")
        print(cmmmc // lungime + cmmmc // lățime - 2)
    else:
        print("Datele nu corespund restricțiilor impuse.")