Rezolvare+explicatie.
Problema in poza
Anexe:
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
#include <iostream>
using namespace std;
int a,b,c;
int putere(int a, int b, int c)
{
if (b==0) return 1;
else
{
if (b%2==0) return ((putere(a,b/2,c)%c)*(putere(a,b/2,c)%c))%c;
else return ((a%c)*(putere(a,b-1,c)%c))%c;
}
}
int main()
{
cin >> a >> b >> c;
cout << putere(a,b,c);
}
Explicație:
era de aşteptat să aplicăm recursia... e mai simplă logica rezolvării.
ce este de comentat?... sfaturile sunt date în enunţ. Am mai adăugat restul şi de expresia de la return nu numai pentru fiecare factor, deoarece rezultatul produsului poate să fie mai mare ca c
GabiAlex99:
La fel !!
if (b==0) , dar nu if (b==1)
Deci, practic, functia returneaza fals daca n este 1 sau se imparte exact la 2/3/4/5 .. singurul raspuns care returneaza fals este 36.. Gresesc undeva sau nu inteleg intrebarea din quiz??
Nu se pune întrebarea pentru care valori primim false, ci pentru care valori primim răspuns greşit
Alte întrebări interesante
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă