W linii 11 (swoją drogą podziliłbym ją - if, for i samo działanie w jednej linii to trochę za dużo) masz operację:
wynik = (wynik * a) % 10;
Zmienna wynik jest jednocyfrowa, nie ma z nią problemu, ale a może przyjąć wartość miliarda, a na 32 bitowych (jakie tam jest środowisko?) liczbach można liczyć tylko do 2-4miliardów (ze znakiem i bez). Pewnie algorytm wariuje gdy a jest skrajnie duże.
PS. Tak ogólnie musisz się trochę oswoić z takim informatycznym myśleniem - jeśli w traści zadania/założeniach projektowych jest napisane że coś na działać dla danych np. od jeden do stu to na te skrajne wartości zawsze należy soft przetestować. Oczywiście jeszcze trzeba też inna wartości użyć, ale te skrajne są "na bank".