Wielokrotności dwóch liczb, mniejsze od

0

Witam, mam problem, otoz musze napisac wielokrotnosci dwoch liczb np. 3 i 4 do 20, a dokladniej chcialbym je zliczyc i wiedziec w jakich momentach występują, duzo kombinowalem z tym ale nic mi nie wychodzi, ktos ma moze jakis pomysl?

#include<iostream>

using namespace std;

int n,m,a,b,zlicz[100000001],maks;

int main()
{
    cin >> n >> m;
    for ( int i=0; i<n; i++ )
    {
        cin >> a >> b;
    }

    for ( int j=a*b; j<m; j+=a*b)
    {
        zlicz[j]++;
    }
         for ( int k=0; k<20; k++ )
         {

    if ( zlicz[k] >= maks )

        {

      //   zlicz[k] = maks;

        }
        cout << zlicz[k] << endl;
         }
    //  cout << maks;

    return 0;
}

tutaj moj kod, wiem, ze nie dziala ale na taki pomysl wpadlem w pierwszej mysli, tylko ze sie nie sprawdza, ogolnie po prostu staram sie zliczyc w jakich miejscach wystepuja wielokrotnosci np. 3 i 4 to 12 i przepisac je do drugiej tablicy

0

duzo kombinowalem z tym ale nic mi nie wychodzi

Pokaż w jaki sposób kombinowałeś.

2

Podaj jakieś przykłady wyniku którego oczekujesz, bo ja szczerze mówiąc nie rozumiem czym są wielokrotności "3 i 4 do 20".
Czy chodzi Ci o

  • wszystkie liczby podzielne przez 3 i przez 4 z zakresu 1...20
  • wszystkie liczby podzielne przez 3 lub przez 4 z zakresu 1...20
  • coś jeszcze innego ?
46

Robisz prostą pętlę w której każda kolejna inkrementacja to liczba1 * liczba2 i masz wspólną wielokrotność.

Nie umiem w onelinery w c++.

[x for x in range(0, 20, n1*n2)]
0

Tak na pierwszy rzut oka (późno jest, więc mogłem coś pomieszać):

Ustaw:

  • max=0,
  • pos=0

Dla każdej liczby "i" z zakresu 1...N:

  • Ustaw cnt = 0
  • Dla każdej pary - sprawdź, czy "i" dzieli się przez iloczyn czasów; Jeśli tak, zwiększ cnt o jeden
  • jeśli cnt > max, ustaw max na cnt, ustaw pos na i
0

Rozwiązanie z mnożeniem pary nie zadziała dla a=10 b=15 N=100. Trzeba sprawdzać podzielność oddzielnie.

0
Krzemień napisał(a):

Rozwiązanie z mnożeniem pary nie zadziała dla a=10 b=15 N=100. Trzeba sprawdzać podzielność oddzielnie.

Wcale nie c=a*b/nwd(a,b); sprawdzamy podzielność przez c.

gracz4291 napisał(a):

... musze napisac wielokrotnosci dwoch liczb np. 3 i 4 do 20

cout<<3*4; Nie? Ale właśnie to napisałeś.

gracz4291 napisał(a):

... a dokladniej chcialbym je zliczyc

Suma czy ilość?

gracz4291 napisał(a):

... i wiedziec w jakich momentach występują

Po kiego ci ta wiedza jak ma wpłynąć na działanie programu?

@gracz4291, programowanie jest dziedziną ścisłą, dopóki nie nauczysz się ściśle się wyrażać dopóty nie masz szans nauczyć się ściśle myśleć, a bez tego nie masz szans nauczyć się programować.

0

Na apelu n par dziewczynek z chłopcami ustawiło się naprzeciw siebie. Teraz każda z osób wyciąga rękę co
dokładnie ustaloną dla każdej osoby liczbę minut. Jeśli pewna para wyciągnie rękę w tym samym momencie,
to następuje uścisk dłoni.
Zastanawiamy się, ile maksymalnie par w tym samym momencie będzie trzymało się za rękę, jeśli wiemy,
że cały apel trwa m minut (czyli w minucie m może nastąpić ostatnie uściśnięcie dłoni). Czas trzymania się
za rękę pomijamy.
Wejście
Pierwszy wiersz wejścia zawiera dwie liczby całkowite n i m (1 ≤ n, m ≤ 10^5), oznaczające odpowiednio liczbę
par oraz czas trwania apelu. Kolejnych n wierszy zawiera po dwie liczby całkowite ci, di (1 ≤ ci, di ≤ 10^9),
opisujące i-tą parę i oznaczające odpowiednio, co ile minut wyciąga rękę chłopiec i co ile minut wyciąga rękę
dziewczynka z i-tej pary.
Wyjście
Pierwszy i jedyny wiersz wyjścia powinien zawierać jedną liczbę całkowitą, oznaczającą maksymalną liczbę
par, które będą trzymały się za rękę w tym samym momencie.
Przykład
Dla danych wejściowych:
4 20
2 1
3 2
4 3
5 4
poprawnym wynikiem jest:
3

0

count=m*nwd(ci,di)/(ci*di);

0
_13th_Dragon napisał(a):

count=m*nwd(ci,di)/(ci*di);

nie za bardzo rozumiem o co tutaj chodzi, czym jest dokladnie count i dlaczego nwd?

0
gracz4291 napisał(a):

czym jest dokladnie count

count - ile razy i-ta para uścisnęła ręce w czasie m

gracz4291 napisał(a):

... dlaczego nwd?

To pytanie nie dla tego forum, podstawy matematyki się kłaniają.

0
_13th_Dragon napisał(a):
gracz4291 napisał(a):

czym jest dokladnie count

count - ile razy i-ta para uścisnęła ręce w czasie m

gracz4291 napisał(a):

... dlaczego nwd?

To pytanie nie dla tego forum, podstawy matematyki się kłaniają.

ok po prostu nie zrozumialem czym jest count

1
  1. wczytujemy size, maxtime, c[], d[]
  2. tablica tb[i]=nww(c[i],d[i]);
  3. posortować tb i usunąć duplikaty
  4. tablica step=tb
  5. bestcount=0
  6. obliczmy mintime=min(tb)
  7. jeżeli mintime>maxtime koniec, bestcount jest wynikiem
  8. currcount=0
  9. dla każdego tb[i]==mintime zwiększamy tb[i] o step[i] oraz zwiększamy currcount
  10. bestcount=max(bestcount,currcount)
  11. przechodzimy do 6.

1 użytkowników online, w tym zalogowanych: 0, gości: 1