32 / 237
Feb 2016

Przeczytaj wszystkie albo chociaż część komentarzy w tym wątku, jak zrozumiesz to gwarantuję, na pewno będziesz miał AC. Natomiast twój kod, bez czytania widać, że twój kod jest do ... bani, ale sam zobacz:
http://ideone.com/Wgw3Kz253
Testy z zadania, to zupełne minimum z minimum, służą bardziej do "mentalnego" zrozumienia zadania a nie do całkowitego stwierdzenia poprawności kodu. Powinieneś wymyślać swoje własne, trudniejsze testy, a tu możesz sprawdzać ich poprawność [dla dowolnych danych]:

http://www.wolframalpha.com/input/?i=mod+%2810000000000000003^2%2C+10%29154

Zastanawiam się co tu może być jeszcze źle, na moich testach już praktycznie wszystko działa confused

   <juz znalazlem blad>

Wiesz, że istnieje takie coś jak wyszukiwanie?( Dokładniej taka lupa w prawym górnym rogu). Ten temat był przetwarzany wiele razy.
Znalazłem test, dla którego twój program daje niepoprawny wynik:
1
333 32323213
Twój out: 1
Poprawny out: 3
Poza tym twój kod jest strasznie nieczytelny - zbyt dużo warunków. Popraw ten kod z pomocą tego linka: cyfra jedności potęgi267.
Wystarczy ułożyć poprawny algorytm z podanych informacji.

PS. Na przyszłość nie twórz nowych wątków, tylko dołączaj się do już istniejących.
PS 2. Zobacz ile już było wątków: wątki

1 month later

Czyli, aby wyznaczyć resztę z potęgowania muszę wyznaczyć dla każdej cyfry warunek, tak ?

Jeżeli dobrze rozumiem "wyznaczyć resztę", to tak.

Ale czy moje rozumienie ma tu jakieś znaczenie? Chyba lepiej po prostu napisać program realizujący Twoją myśl i zobaczyć co z niego wyjdzie wink

14 days later

Panowie... poległem, po przeczytaniu tych wszystkich postów i dosłownie dziesiątek prób zmian tego kodu doszedłem do tej wersji i mimo, że przy każdej sprawdzanej przeze mnie kombinacji cyfr wynik wychodzi dobry, to jednak SPOJ nie akceptuje mojego kodu.

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int a, t;
    double b, c;
    
    cin >> t;
    
    for(int i = 0 ; i < t ; i++)
    {
            cin.clear();
            cin.sync();
            
            cin >> a >> b;
            
            a = a%10;
            c = pow(a, b);
            int d  = (int)(c);
            
            cout << d%10 << endl;
    }
    return 0;
}

Widać druga cyfra nie byłą wystarczająco duża, dla testu 2 100 twój program wypisuje -8 a poprawna odpowiedź to 6. A w tym zadaniu mogą pojawić się dużo większe b niż 100.

edit: umieszczaj kod w tagach dostępnych pod ctrl + k albo linkuj do ideone, inaczej będzie "pocięty".

Dzięki za uświadomienie błędu, zaliczyło zadanie po poprawie!

Też mam problem z tym zadaniem mianowicie na ideone.com kiedy sprawdzam program wyskakuje sukces. Ale sędzia wyrzuca mi błąd ze przekroczyłem limit czasu

Wklej swój kod, inaczej nikt nie będzie w stanie Ci pomóc.

Jeżeli jednak nie chcesz wklejać kodu to mam pewną sugestię: problem może leżeć w sposobie wczytywania danych.

Jeżeli na przykład dane wczytujesz w for(int i = 0; i <= t; i++) to pętla wykona się t+1 razy (0, 1, 2, ... , t). Przykładowo:

2
2 3
3 3

2 i 3 - bez problemu, 3 i 3 - bez problemu.

Ale co dalej? Program będzie czekał na jeszcze jeden zestaw danych. Na ideone daje to sukces a na SPOJu WA (sprawdzone na moim kodzie do tego zadania).

Ale lukaster o TLE pisał. Poza tym takich przypadków są setki.

Przepraszam. Moje niedopatrzenie.

Jeżeli jednak ktoś ma WA to post może wciąż pomóc.

98 100

Ostatnia cyfra to 6. Twój kod daje 0 (o ile dobrze go wkleiłem i doprowadziłem do stanu użytecznego).

TLE wynika z faktu, że nim dostaniesz WA kończy się limit czasu.

98 do potęgi 100 daje = 1.3261955589475E+199
a u mnie faktycznie daje 0. Więc należałoby zmienić modulo na większą wartość ?

Nie. Zmiana modulo nic nie da, bo wówczas nie będziesz wyświetlał ostatniej cyfry wyniku, a na przykład dwie ostatnie cyfry.

Przeczytaj sobie pierwszych kilka (minimum 6) postów - tam znajdziesz podpowiedź wink

Prelude> 98^100
13261955589475318753308980958435182616922905831015351444050494533312509010756375490958520845863725759086387552664739214251402218000635896969959420366494800836445520178642939314417801334276044804325376
Prelude>