393
Cerința
Definiți funcția
void FRadical(int n, int &x, int &y)
cu parametrii:
n, prin care primește un număr natural din intervalul[1, 1.000.000.000]xșiy– două numere naturale care se determină, cu proprietatea căx2* y = n, iarxeste maxim posibil
Exemplu
În urma apelului FRadical(15000, x, y), se obține x = 50, y = 6.
Important
Soluţia propusă va conţine definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.
#include <bits/stdc++.h>
void FRadical(int n, int &x, int &y){
int maxi = 0;
for(int d = 1; d * d <= n; ++d){
if(n % d == 0){
int nr = d;
int r = sqrt(nr);
if(r * r == nr && nr > maxi)
maxi = nr, y = n / d;
nr = n / d;
r = sqrt(nr);
if(r * r == nr && nr > maxi)
maxi = nr, y = d;
}
}
x = sqrt(maxi);
}
Comentarii