2371 - Biliard

De la Universitas MediaWiki

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.")