Scrieți un subprogram care primește doi parametri, n și x, și care returnează valoarea absolută radicalului de ordin n din x.
Restricții și precizări
Subprogramul are următorul antet: long long nroot(int n, long long x);
2≤n≤1000;
−260≤x≤260;
Se garantează faptul că rezultatul este întotdeauna un număr întreg.
Exemple:
nroot( 10, 1024 ) returnează 2;
nroot( 3, 0 ) returnează 0.
Stiti de ce nu primesc 100 de puncte la aceasta problema?
#include
using namespace std;
long long cautare_binara(long long &x)
{long long v[61],p=1;
int i;
if(x<0)
x=-x;
for(i=1;i<=60;i++)
{ p=p*2;
v[i]=p;
}
int sol=-1,right=60,left=0,mij;
while(left<=right)
{int mij=(left+right)/2;
if(v[mij]==x)
{sol=mij;
break;
}
if(v[mij]>x)
right=mij-1;
if(v[mij]
left=mij+1;
}
return sol;
}
long long nroot(int n,long long x)
{if(x<0)
x=-x;
if(x!=1)
{if(n==2) return cautare_binara(x);
if(n>2)
{if(cautare_binara(x)==n)
return 2;
if(cautare_binara(x)>n) return cautare_binara(x)/n;
if(n>cautare_binara(x)) return 0;
}
if(cautare_binara(x)>n)
return cautare_binara(x)/n;
if(cautare_binara(x)
return 0;
}
if(x==1)
return 1;
}
int main()
{int n;
long long x;
cin>>n>>x;
cout<
return 0;
}
boiustef:
da? eu nu m-am uitat la indicatii ... :)))
Limita timp 0.01 secunde Limita memorie Total: 8 MB / Stivă 4 MB
Id soluție #18304392 Utilizator Boiu Stefan (stefan52)
Fișier nroot.cpp Dimensiune 163 B
Data încărcării 02 Noiembrie 2019, 21:48 Scor / rezultat 100 puncte
Răspunsuri la întrebare
Răspuns de
2
Răspuns:
#include <cmath>
long long nroot(int n, long long x)
{
float exp=(double)1/n;
if (x<0) x=-x;
if (x==0) return 0;
else return pow(x,exp);
}
Explicație:
Alte întrebări interesante
Chimie,
8 ani în urmă
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă