222 / 237
Oct 2020
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.

Czyli po prostu robię to złą metodą? Bo chyba nie ma zmiennej która pomieści takie liczby.

Tak, trzeba inna metodą. W tym temacie były wskazówki co można zrobić.
Trzeba zauważyć 2 rzeczy przy potęgowaniu dla rozwiązania tego zadania.

1 year later

Witam programistów. Mógłby ktoś rzucić okiem na ten kod? Wydaje mi się, że jest dość optymalnie napisany, a cały czas wyskakuje błąd z przekroczeniem limitu czasu. Dopiero raczkuje w tej dziedzinie i bardzo cenie sobie rady bardziej doświadczonych osób. Z góry dzięki, pozdrawiam.

(1 ≤ a,b ≤ 1 000 000 000). naprawdę chcesz robić 1000000000^1000000000 ? ZAdanie polega na wyznaczeniu ostatniej cyfry a nie całej liczby… W wątku są wskazówki… Pisadło i karka też są przydatne :wink:

3 months later
#include <iostream>
#include <cmath>
using namespace std;
int loop;
double a[10],b[10];
long long int odp[10];
int main()
{
    cin>>loop;
    if(loop==0) return 0;
    for(int i=0; i<loop; i++)
    {
    cin>>a[i]>>b[i];
    odp[i] = pow(a[i],b[i]);
    }

    for(int i=0; i<loop; i++)
{
    cout<<odp[i]%10<<"\n";
}
return 0;
}

mam coś takiego ale nie wiem czego brakuje/co jest źle