fbpx

Problema #2975 – FRadical – Rezolvari PBInfo

de Mihai-Alexandru

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 și y – două numere naturale care se determină, cu proprietatea că x2 * y = n, iar x este 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

S-ar putea sa iti placa