100 / 237
Oct 2016

Z doublem to był mój błąd który został naprawiony :slight_smile: Zauważyłem zależność miedzy potęgami ( powtarza się co 4). Z tego co napisałeś wynika ze rozwiązać to zadanie można tylko korzystając z tej zależności. Tak czy inaczej dzięki.

Tak, z tym, że wyniki rzędu jedności potęg nie wszystkich cyfr powtarzają się co 4, ale więcej nie napiszę, żeby Ci nie zabierać frajdy i satysfakcji z samodzielnego dochodzenia do rozwiązania. Co do tego jedynego sposobu na rozwiązanie, ten jest jedynym działającym, z którym się spotkałem(pisząc i potem patrząc w parę kodów tutaj), ale może są jakieś inne. Jeśli chodzi o to "czytanie książki", to się powtórzę, ale polecam, z autopsji. Obecnie czytam symfonię c++ i choć na pierwszy rzut oka wszystkie poruszane tematy są oczywiste, co chwila się czegoś dowiaduję czytając to. Trochę się pomądrowałem, ale może znajdziesz w tej wypowiedzi przydatne dla siebie rzeczy. Pozdro:)

Może mi ktoś powiedzieć, czy moje rozwiązanie jest dobre... Tzn testy przechodzą, ale nie wiem czemu dopiero przy zmodulowaniu wykładnika przez 20 testy przechodzą... Czy okres liczby jedności w wszystkich potęgach jest 20 lub jego dzielnikiem?

Summary

include

using namespace std;

long long int pot(int a,int b)
{
if(b==1)return a%10;
else return (a*pot(a,b-1))%10;
}

int main()
{
int x,y,z;
cin>>x;
for(int i=0;i<x;i++)
{
cin>>y>>z;
y=y%10;
z=z%20;
if(z!=0)cout<<pot(y,z)<<endl;
else cout<<"1"<<endl;
}
return 0;
}

Co jest złego z tym kodem? (Jeśli zamierzasz odpowiedzieć poczytaj u góry to oszczędź klawiatury i nie odpisuj ;] )

include

include

using namespace std;
unsigned long long a,b,temp,wynik,ile;
int main()
{
cin>>ile;
for(unsigned int i=1; i<=ile; i++)
{
cin>>a>>b;
temp=pow(a,b);
if(b==1)
{
wynik=a;
}
if (b==0)
{
wynik=1;
}
else{
wynik=temp%10;
}
cout<<wynik;
}
return 0;
}
`

nic nie jest złego - tyle, że poprawnie rozwiązuje tylko niewielki podzbiór możliwych zestawów danych

oczywiście informacja, dlaczego tak się dzieje jest gdzieś powyżej w tym wątku.

z twojego komentarza rozumiem, że nie masz czasu, aby przeczytać cały wątek (lub nie rozumiesz co czytasz)

ja natomiast nie mam czasu po raz n-ty tłumaczyć podstawowych rzeczy

pozdrawiam, i życzę powodzenia

16 days later

Na ideone nie testowałem, tylko na kompie. I na kompie wszystko jest okej. Te przykłady, których użyłeś działają u mnie poprawnie, a na ideone już nie. O co chodzi? :confused:

25 days later

Witam,

poczytałem wszystkie wątki i już mam pomysł na inne rozwiązanie z case'ami :wink: jednak zapisałem to inaczej link14 i zastanawiam się dlaczego mi nie przechodzi.
Wykonałem wszystkie testy jakie tu podajecie i zawsze miałem prawidłową odpowiedź a mimo to dostaję od sędziego błędną odpowiedź :confused:

Byłbym wdzięczny za wskazówkę co zrobiłem nie tak.

wszystkich zamieszczonych tu testów to nie zrobiłeś - sprawdź dla danych zamieszczonych w poście nr. 52

Możesz jaśniej? Bo nie rozumiem.
W 52 jest o if a==0 <- co z założenia jest niepotrzebne, bo liczby są z zakresu 1 <= a <= 1000000000 :wink: a w sytuacji a==1 to moje rozwiązanie też powinno zadziałać; niemniej jednak dodałem if'a dla a==1, ale sędzie i tak nie przepuszcza.

Nie rozumiem, z czym sędzia ma w tej sytuacji problem.

Proszę o wyjaśnienie, nie rozwiązanie, bo chcę zrozumieć co jest złego w moim kodzie. Koduję dopiero tydzień, więc proszę o wzięcie tego pod uwagę przy pisaniu :slight_smile:

Z góry dziękuję za pomoc.

być może źle liczyłem posty :), może to jest 53 - w każdym razie autorem jest j4rooo, podany jest tam test dla około 40 par liczb, dla części z nich masz złe wyniki

Witam, u mnie test z postu 53 daje tyle wyników ile trzeba, natomiast mam problem z innym testem wypisanym tutaj,
http://ideone.com/tnXXKq16

Czy moglibyście dać jakaś podpowiedź co jest źle bo już mam załamkę?

Zwiększ zmienne do long long int.

Po tej zmianie:

Twoj out:
1
1
2
1
4
5
6
7
2
0
0

Prawidłowy out:

1
1
2
1
4
5
6
7
2
9
0

Czyli nie przechodzi ci tego testu:
1
9 21538123

dane wejściowe są z poza zakresu podanego w zadaniu i z poza zakresu int-a
zaś w przypadku używania cin, jeżeli wczytywana liczba przekracza zakres typu, to skutkuje to zniszczeniem strumienia wejściowego

dla tego testu zamiast 2321323123 wczytywane jest 2147483647 (max dla int-a), a później wczytywane wartości to same 0

10 days later

Witam, kod wydaje mi się dobry ale nie chce przejść więc coś musi być nie tak... Proszę o pomoc z tym

include

include

using namespace std;

int main()
{
int n;
cin>>n;
unsigned long long int a,b;
for(int i=0; i<n; i++)
{cin>>a;
cin>>b;

switch (a%10)
{

    case 1: cout<<1<<endl; break;
    case 2:
        {   int tmp=b - 4*((b-1)/4);

            if(tmp==4 )
                cout<<6<<endl;
            else if (tmp==1)
                cout<<2<<endl;
            else if (tmp==2)
                cout<<4<<endl;
            else if (tmp==3)
                cout<<8<<endl;
                break;
        }
    case 3:            {   int tmp=b - 3*((b-1)/3);

            if(tmp==1 )
                cout<<3<<endl;
            else if (tmp==2)
                cout<<9<<endl;
            else if (tmp==3)
                cout<<7<<endl;
                break;
        }
    case 4:
        {   int tmp=b - 2*((b-1)/2);

            if(tmp==1 )
                cout<<4<<endl;
            else if (tmp==2)
                cout<<6<<endl;
                break;
        }
    case 5: cout<<5<<endl; break;
    case 6: cout<<6<<endl; break;
    case 7:
            {   int tmp=b - 4*((b-1)/4);

            if(tmp==1 )
                cout<<7<<endl;
            else if (tmp==2)
                cout<<9<<endl;
            else if (tmp==3)
                cout<<3<<endl;
            else if (tmp==4)
                cout<<1<<endl;
                break;
            }
    case 8:
        {   int tmp=b - 4*((b-1)/4);

            if(tmp==1 )
                cout<<8<<endl;
            else if (tmp==2)
                cout<<4<<endl;
            else if (tmp==3)
                cout<<2<<endl;
            else if (tmp==4)
                cout<<6<<endl;
                break;
        }

    case 9:
            {   int tmp=b - 2*((b-1)/2);

                    if(tmp==1 )
                        cout<<9<<endl;
                    else if (tmp==2)
                        cout<<1<<endl;
                    break;
            }
    case 0: cout<<0<<endl; break;

}

}

return 0;

}

21 days later

Czy ktoś ma pomysł jak mogę przyśpieszyć program? Sędzia wyrzuca mi przekroczenie limitu czasu...

int n, p, w;

long int potega(int p, int w)
{
if (w==0) return 1;
else return p*potega(p,w-1);
}

int main()
{
cin>>n;

for(int i=0; i<=n; i++)
{
cin>>p>>w;
cout<<potega(p, w);
}

Przeczytaj dokładnie treść zadania. Tu nie chodzi o wynik potegowania.