c++简单题解:
使用二分法一步一步判断,
#include<iostream>
using namespace std;
int main()
{
float n;
cin >> n;
int mark = 1; //标记正负数
if(n<0) mark=-1;
n*=mark;
int a[(int)n+2];
a[0]=0;
double f=0.0;//结果
for(int i=0; ; i++)
{
a[i]=i*i*i;
if(a[i]==n)
{
f=a[i];
break;
}
else if(a[i]>n&&a[i-1]<n)
{
float tmp = i-0.5;
float t=tmp*tmp*tmp;
if(t>n)
tmp=i-1;
else if(t==n)
{
f=tmp;
break;
}
t=tmp*tmp*tmp;
while(t<n)
{
tmp+=0.1;
t=tmp*tmp*tmp;
}
t=tmp-0.05;
if(t*t*t>n)
f=tmp-0.1;
else
f=tmp;
break;
}
}
cout << f*mark << endl;
return 0;
}
京公网安备 11010502036488号