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