#include <stdio.h>
#include <stdlib.h>
int liczba_jednosci(int podstawa, int wykladnik){
podstawa -= (podstawa / 10) * 10;
switch(podstawa){
case 0: return 1;
case 1: return 1;
case 2:
if(wykladnik % 4 == 1) return 2;
if(wykladnik % 4 == 2) return 4;
if(wykladnik % 4 == 3) return 8;
if(wykladnik % 4 == 0) return 6;
case 3:
if(wykladnik % 4 == 1) return 3;
if(wykladnik % 4 == 2) return 9;
if(wykladnik % 4 == 3) return 7;
if(wykladnik % 4 == 0) return 1;
case 4:
if(wykladnik % 2 == 1) return 4;
else return 6;
case 5: return 5;
case 6: return 6;
case 7:
if(wykladnik % 4 == 1) return 7;
if(wykladnik % 4 == 2) return 9;
if(wykladnik % 4 == 3) return 3;
if(wykladnik % 4 == 0) return 1;
case 8:
if(wykladnik % 4 == 1) return 8;
if(wykladnik % 4 == 2) return 4;
if(wykladnik % 4 == 3) return 2;
if(wykladnik % 4 == 0) return 6;
case 9:
if(wykladnik % 2 == 1) return 9;
else return 1;
case 10: return 0;
}
}
int main()
{
int i, liczba_testow, podstawa, wykladnik;
scanf("%d", &liczba_testow);
for(i=0;i<liczba_testow;i++){
scanf("%d %d", &podstawa, &wykladnik);
printf("%d\n",liczba_jednosci(podstawa, wykladnik));
}
return 0;
}
Po wrzuceniu tego kodu na spoja sędzia zwrócil blędną odpowiedź, coś mnie tkneło i zmieniłem czwartego case'a na:
case 4:
if(wykladnik % 2 == 1) return 4;
if(wykladnik % 2 == 0) return 6;
Sędzia zaakceptował odpowiedź. Nie bardzo rozumiem różnicę, proszę o jej wytłumaczenie. Mile widziane bedą również uwagi dotyczące refaktoryzacji kodu.