ďťż

Ładny brzuch

Mam następujący problem z typami liczb a może z moją nie wiedzą na temat prog (pewnie raczej z tym drugim :) ) Otóż muszę podnieść liczbę do potęgi a potem podzielić ją modulo inną liczbę.

Sprawa jest na pozór banalna ale tylko do momentu kiedy dostaje się liczbę np 27^5728 mod 43.

Zwykły unsigned long long int nie daje poprawnego wyniku.

Czy może ktoś wie czy jest jakiś typ którym można to obsłużyć lub jak to obejść - musze zaznaczyć że nie mogę używać żadnych dodatkowych bibliotek których nie ma w g++.

Bardzo proszę o pomoc.



c = a;
c*=a;
c*=a;
c*=a;
...
c%=43;

a teraz rzecz rownowazna:
c = a% 43;
c = (c*a )%43;
c = (c*a )%43;
c = (c*a )%43;

poczytaj o własnościach operacji na zbiorze modulo n.

Dziękuję działa - ale czy można to zrobić przy pomocy jakiegoś większego typu liczbowego? Czy istnieje wogóle coś takiego - bo mówi się np o liczbach 128 bit a największe są 64 bit chyba w podstawowych typach?

możesz napisać własną artmetyke dla dużych liczb i zaimplementowac podstawowe operacje na nich



w api do kompilatora lcc-win jest standardowo dodana taka biblioteka...

jest cos takiego jak calkowita 64 bitowa, ale jak to maja byc duze liczby to odpada,
proponuje pokombinowac cos z zasadami podzielnosci liczb...

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •