Informatică, întrebare adresată de zeldaktime, 8 ani în urmă

Cum pot face o functie recursiva in care sa aflu restul impartirii lui a la puterea b la c?
eu am facut cu un for de la i la b si o variabila result si am returnat result % c.
Insa daca e par trebuie : a la puterea b = a la puterea b / 2 * a la puterea b / 2
si daca e impar a la puterea b este egal cu a * a la puterea b - 1.
Cu solutia mea iau 50 de pct, insa cred ca trb sa folosesc treaba cu impar si par, cum credeti ca ar trb sa o folosesc?


Rayzen: Zi-mi si mie numarul problemei.
Rayzen: # cat?
boiustef: ???? nu e de pe pb...
boiustef: unde ai testat programul?
pmarian98: #3208
boiustef: nu e asta..
boiustef: totusi era bine sa stim unde ai testat programul, sa-l putem si noi acolo...

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

using namespace std;

int a,b,c,p=1;

int rest(int a, int b, int c)

{

   if (b==0) return 1;

   else

   {

       return (rest(a, b-1, c)*a)%c;

   }

}

int main()

{

   cin >> a >> b >> c;

   cout << rest(a,b,c);

}

Explicație:

am aflat restul de la impartirea a^b la c,  fara a afla puterea a^b

S-a obtinut laconic si elegant..


zeldaktime: Nu functioneaza in totalitate, posibil din cauza repetarilor sau idk
zeldaktime: Practic se ia crash pe doua teste
zeldaktime: Brb putin, te rog, poate o sa gasesc eu cumva pe programul tau, seama cu al meu
boiustef: unde testezi, nu pot si eu ?
boiustef: crash e problema de memorie?
boiustef: incearca long long inloc de int
zeldaktime: Nu e de la long long. Problema cred ca e pentru cazurile de paritate. Daca este par, practic a la b trebuie sa fie egal cu a la b pe 2 * a la b pe 2, daca nu, a la b = a * a la b -1, adica cazul al doilea ce ai facut si tu.
boiustef: nu ne spui unde testezi... :(((
zeldaktime: Nu am voie sa divulg unde testez chestia asta:). Si oricum tot nu reusesc, e prea ciudata problema dupa pararea mea, am incercat toate modalitatile..
Rayzen: Lucrezi la Nasa si nu stim noi...
Ok, e secret de stat, nu poti sa ne divulgi aceasta informatie.
Alte întrebări interesante