Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

Użytkownik


Robie sobie przed obozem informatycznym różne zadanka.
I http://sio.mimuw.edu.pl/user.phtml/zap.pdf?op=get&id=77871 w tym mam taki problem ze tam jest pewna zaleznosc z NWD ale reczne liczenie na chama w pętlach sie wywali na wiekszych liczbach. Macie jakiś inny pomysł, chętnie poprosiłbym o jakies podpowiedzi matematyczne?
Moj obecny kod:
#include <iostream>
using namespace std;
int nwd(int a,int b)
{
if(b==0)
return a;
nwd(b,a%b);
}
struct zapytanie {
int a;
int b;
int d;
int je;
};
int main()
{
int n;
cin >> n;
zapytanie *tab = new zapytanie[n];
for(int i=0;i<n;i++)
cin >> tab[i].a >> tab[i].b >> tab[i].d;
for(int i=0;i<n;i++)
{
tab[i].je=0;
for(int x=1;x<=tab[i].a;x++)
for(int y=1;y<=tab[i].b;y++)
if(nwd(x,y)==tab[i].d) tab[i].je++;
}
for(int i=0;i<n;i++)
cout << tab[i].je <<endl;
return 0;
}
Offline

Członek DUG

Użytkownik


Właśnie tak mam to zrobione ale na zestawie tysięcy liczb kilkucyfrowych do miliona bede czekał w nieskonczonosc z moim rozwiazaniem - musi istniec jakis bardziej elegancki sposob i szybszy ?
Offline

Członek DUG


Próbowałeś funkcji bez rekurencji?
Z tego co pamiętam to na tego typu konkursach raczej nie używa się strumieni tylko stdio.h (ewentualnie cstdio jak już chcesz w ++);)
Na upartego tą linijkę:
if(nwd(x,y)==tab[i].d) tab[i].je++;
można by zamienić na
tab[i].je += (nwd(x, y) == tab[i].d);
ale to już może przesada =) no i większej różnicy nie będzie..
A gdyby tak zadeklarować tablice/tablicę struktur o określonym(czyt. max dopuszczalnym w zadaniu) rozmiarze zamiast przydzielać pamięć dynamicznie?
//takie luźne przemyślenia
pzdr.
Offline

Członek DUG


Ja to bym Ci polecil niebieskie ksiazeczki z OI. Sam zawsze do nich zagladam jak mam jakis problem. Nie wkleje Ci linka, bo w tej chwili strona OI nie dziala, a nie jestem pewien, czy znajdziesz tam najnowsze wydania.
Offline

Użytkownik


Zapomniałem o książeczkach - Dzięki za przypomnienie i sugestie ;-)
Offline