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; }