Kurs maturalny z języka angielskiego!
kurs-maturalny-jezyk-angielski

PROGRAMOWANIE I ALGORYTMY

Zajęcia maturalne z informatyki
Olimpiada Informatyczna Juniorów
    Prowadzący: Marcin Kasprowicz
  • właściciel serwisu algorytm.edu.pl
  • wrzesień 2024 — start zajęć
  • czytaj więcej

Sinusoida


Trygonometria to ulubiony dział Jasia. Nauczyciel Bitold Bajtowicz właśnie przedstawił uczniom wykresy funkcji trygonometrycznych, między innymi funkcję sinus. Na lekcji uczniowie rozwiązywali mniej lub bardziej skomplikowane równania trygonometryczne. Jako zadanie dodatkowe, profesor Bajtowicz poprosił uczniów, aby podali liczbę rozwiązań następującego ukladu równań:

układ równań

Jasiu już dawno je rozwiązał, ale chciałby zweryfikować swoje wyniki i poprosił ciebie, jako dobrego kolegę i utalentowanego programistę, abyś napisał program, który poda wyniki do zadania.

 

 

Wejście

W pierwszym wierszu jedna liczba t określająca ilość zestawów danych.

Dla każdego zestawu trzy liczby: a, b i m, gdzie ab i są to liczby całkowite, takie, że |a| ≤ 109, |b| ≤ 109, oraz liczba rzeczywista m podana z dokładnością do dwóch miejsc po przecinku.

Wyjście

Dla każdego zestawu danych jedna liczba określająca ilość rozwiązań układu równań.

Przykład

Wejście:
2
-2 2 0.50
-2 2 2.00
Wyjście:
4
0

Szkic rozwiązania

sinus

Przeanalizujmy powyższy rysunek, na którym naniesiono funkcję sinus oraz stałą $$y=m$$. Zauważmy, że liczba rozwiązań jest uzależniona od ilości przecięć się tych dwóch funkcji. Zauważmy także, że przedział $$[a\cdot\pi,b\cdot\pi]$$ zawsze rozpoczyna się i kończy w miejscu zerowym funkcji $$\sin x$$. Do rozwiązania zadania należy rozpatrzyć cztery przypadki:

  1. Gdy $$|m| > 1$$, wtedy nie mamy żadnego rozwiązania
  2. Gdy $$m=0$$, wtedy mamy b-a+1 rozwiązań
  3. Gdy $$|m|<1$$, funkcja $$y = m$$ okresowo co $$2\cdot\pi$$ przecina sinusoidę w dwóch miejscach. 
  4. Gdy $$|m|=1$$, funkcja $$y = m$$ okresowo co $$2\cdot\pi$$ przecina sinusoidę w jednym miejscu.