Wątek przeniesiony 2018-12-18 17:41 z C/C++ przez furious programming.

Przyspieszenie part 2

2018-12-18 17:56
0

Jak można przyspieszyć program?

Zadanie:

http://solve.edu.pl/contests/download_desc/1871

#include <iostream>
using namespace std;
int main()
{
long long int ktorazkolei=0, liczba=5;
cin>>ktorazkolei;
for (int i=0; i<ktorazkolei; liczba=liczba+ 2 )
{
if ((liczba%2!=0)&&(liczba%3!=0)&&(liczba%5!=0))
{
i++;
}
}
cout <<liczba- 2;
return 0;
}

Tytułowanie wątków i Formatowanie treści – zapoznaj się z tymi artykułami, zanim założysz kolejny wątek. - furious programming 2018-12-18 17:59

Pozostało 580 znaków

2018-12-18 18:03
0

oblicz lcm(2, 3, 5), policz ile liczb miedzy 0 a tą liczbą mieści się prawie pierwszych i główkuj dalej.

Zgodnie z definicją 1 jest prawie pierwsza, a dane testowe tego nie uwzględniają, wiec trzeba na to wziąć poprawkę (prawie pierwsza o indeksie zero).


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 3x, ostatnio: MarekR22, 2018-12-18 18:11

Pozostało 580 znaków

2018-12-18 18:37
0

W takich problemach mozna próbowac w drugą stronę: odfiltrować liczby podzielne przez 2, 3 i 5, Do danej N, to co zostanie to muszą byc już prawie pierwsze. Znajść je jest łatwo, to wszystkie możliwe iloczyny 2^n * 3^k * 5^j, inaczej wszystkie możliwe kombinacje n, k, j. Licząc je od najmniejszej, utrzymujemy stan przy której liczbie prawie pierwszej jesteśmy: od bierzącej liczby odejmując ilość znalezionych nie prawie pierwszych.


edytowany 1x, ostatnio: lion137, 2018-12-18 18:38

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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