217 / 237
Apr 2020

Moze podpowiem gdzie lezy podstawowy problem

Pierwsza linijka zgoda. Tylko cyfra jednosci w podstawie wplywa na cyfre jednosci w wyniku. (latwo zauwazyc przy mnozeniu pisemnym)
Druga linijka niestety to nie zadziala.
przyklad:
2 do potegi 10 = 1024,
2 do potegi 20 = 1048576
cyfry jednosci sa rozne
Czyli na pewno nie bedzie dzialac dla %10.
Dla pewnej wartosci zadziala. Ja uzylem arkusz kalkulacyjny do przeliczenia kolejnych poteg dla wielu kolejnych podstaw i zauwazenia cyklicznosci. Mozna tez policzyc na kalkulatorze, na kartce zapisac tabelke.

Nie wchodząc w Twój algorytm dodałbym jeszcze jeden podstawowy błąd. Dla zwykłej tablicy w c++ musisz podać jej rozmiar jeszcze przed kompilacją. Jeśli chcesz podawać rozmiar w trakcie wykonywania zastosuj tablicę dynamiczną albo użyj bardzo wygodnego kontenera jaki jest vector. Tak nawiasem mówiąc to używanie tablicy jest tu niepotrzebne, możesz na bieżąco liczyć ostatnią cyfrę z a^b i dawać to na wyjście.

@pawoj20 dzięki za pomoc :). Naprawiłem ten błąd i SPOJ zaliczył zadanie.
@korkirw tak wiem ale jeszcze ogarniam ten temat: Uczę się C++ dopiero około 1,5 tygodnia.

3 months later

zdecydowanie, dużo mi pomogłeś, nie mogłem trafić na tę ścieżkę rozumowania. Ale udało mi się. Dziękuje.

27 days later
21 days later

Witam.
Napisałem kodzik, testuje wiele liczb i wszystko wychodzi mi poprawnie. Wrzucam do SPOJa to wyskakuje mi "błędna odpowiedź"
KOD: https://ideone.com/STeUIx14
Przeczytałem powyżej kilka różnych problemów ale w żadnym nie ujrzałem tego co mogło by mi pomóc.
Swoją drogą zauważyłem, że moje rozwiązanie na tle innych jest nietypowe.
Będę wdzięczny za znalezienie błędu.

Moim zdaniem niedużo już brakuje do zaliczenia.(dwie dodatkowe linijki lub zmiana jednej :thinking: )
Oto test pokazujący problem:
Wejście
9
987654325 4
87654325 4
7654325 4
654325 4
54325 4
4325 4
325 4
25 4
5 4
prawidłowe wyjście
5
5
5
5
5
5
5
5
5

byłem zdziwiony, że taką długą liczbę podałeś bo byłem pewien że jest podany zakres w zadaniu jest do 1 000 000. Źle odczytałem bo było do 1 000 000 000
Dzięki wielkie :stuck_out_tongue:

5 months later

Hej, napisałem kod który wrzucam poniżej. Logicznie wszystko jest poprawnie, zrobiłem setki testów i zawsze dostaje dobrą odpowiedź, niestety sędzia na SPOJu mi nie zalicza odpowiedz. Ktoś powie co jest nie tak?
`
Kod już działa:)

Ok, dzięki za odpowiedź, zaraz przeczytam to co poleciłeś a potem skasuje kod. O co chodzi z tym formatem wyjścia? Pytam, bo jestem zupełnie początkującym. Czy chodzi o to, że kod powinien być napisany tak, że użytkownik najpierw podaje wszystkie swoje liczby, a dopiero potem wyświetlane są wyniki?

Tak jest dobrze, (nie trzeba zapamietywac calosci), tylko brakuje jednego znaku oddzielajacego poszczegolne wyniki. Domyslam sie ze testujesz program w konsoli i nie widac tam ze wynikiem dzialania programu jest ciag cyfr.

2 months later

Cześć, zamieszczam kod który działa mi bez zarzutu gdy go otworze, a jednak na spoju wyskakuje błędne rozwiązanie lub błąd kompilacji. Wie ktoś może gdzie jest błąd?

#include
#include
#include
using namespace std;
int main()
{
int t, i,j,a,b;
//double a, b;
cin >> t;
for (i = 0; i < t; i++)
{
cin >> a >> b;
int p = pow(a, b);
string s = to_string§;
for (j = 0; j <= s.length(); j++)
{
char x = s[j];
if (j == s.length()-1)
{
cout << x << endl;
}
}
}
return 0;
}

Na pewno błędne są include bez zawartości w nawiasach ostrych. string s = to_string§; też nie ma prawa działać ze względu na § oraz fakt, że nie m nigdzie zmiennej to_string.

Jeśli ta odpowiedź nie pomogła to może wstaw prawidłowy i sformatowany kod (choćby jako link do Ideone)?

To błędy przy wklejaniu załączam link do ideone:

Pytanie, jaką odpowiedź wygeneruje Twój program dla takich danych wejściowych:
1
10 10

Faktycznie wyszedł błędny wynik, więc zmieniłem zmienną na long long int i działa, ale sędzia dalej nie zalicza mi tego rozwiązania.

Jest duże prawdopodobieństwo, że typ “long long int” jest za mały, aby wygenerowac dobry wynik dla takiego czegoś:
1
100 100
Przeczytaj treść zadania, tam jest wyraźnie podane, jakie mogą być wartości a i b.