PA05_POT - Czy umiesz potęgować - błędna odpowiedź

0

Witam, jakiś czas temu wróciłem do zadanek ze spoja i przy ww. zadaniu sędzia stwierdza błędną odpowiedź. Czy ktoś mógłby zerknąć na mój kod i ewentualnie powiedzieć co tu jest nie tak? Robiłem różne testy i nie widzę błędu w tym kodzie, ale muszę się jeszcze Was poradzić :). Z góry dzięki za jakieś sugestie

kod: https://pastebin.com/CZpQufB4

1

zamiast tego switch case umieść wyniki w tablicy.
Kod skróci się do paru linijek.

Zauważ, że tak naprawdę obliczasz:
a^b mod 10 = (a mod 10)^{b mod 4} mod 10

0

Sprawdź sobie z tym: https://zapytaj.onet.pl/Category/006,003/2,21355595,Jak_wyznaczac_ostatnia_cyfre_potegi_liczby_naturalnej_o_bardzo_duzym_wykladniku.html?utm_source=zapytaj_viasg&utm_medium=nitro&utm_campaign=zapytaj_nitro ,
ale z tego co pammietam, to tam, żeby się zmieścić w czasie, wystarczy zastosować potęgowanie modulo (nie mam pojęcia czy jest w bibliotece standardowej).

0

Tyle wystarczy (upośledzony gotowiec - działa poprawnie, licz nie do pokazania prowadzącemu):

#include <stdio.h>

int main() 
  {
   for(unsigned T,a,b=scanf("%u",&T);T--;printf("%c\n",(10*(b&3)+(a%10))["0161656161012345678901496569410187456329;P"])) scanf("%u%u",&a,&b);
   return 0;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1