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

PA05_POT - Czy umiesz potęgować - błędna odpowiedź
P2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
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

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
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

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5046
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).

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
#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;
  }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.