您的位置:首页 > 其它

九度oj-题目1166:迭代求立方根-数学

2017-07-06 09:48 204 查看

题目1166:迭代求立方根

时间限制:1 秒内存限制:32 兆特殊判题:否提交:5037解决:2313

题目描述:

立方根的逼近迭代方程是 y(n+1) = y(n)*2/3 + x/(3*y(n)*y(n)),其中y0=x.求给定的x经过n次迭代后立方根的值。

输入:

输入有多组数据。

每组一行,输入x n。

输出:

迭代n次后的立方根,double精度,保留小数点后面六位。

样例输入:

3000000 28

样例输出:

144.224957

来源:

2009年北京航空航天大学计算机研究生机试真题

思路:

简单的迭代。从没想过北航竟然会有这么简单的题目。不过为啥不把输入的数据类型和范围交代清楚。

AC代码:

#include<bits/stdc++.h>
#define long long ll
using namespace std;
int x,N;
double fun(double y0,int n){
double ans = y0;
if(n < N){
ans = 1.0*y0*2/3+ 1.0*x/(3*y0*y0);
fun(ans,n+1);
}else{
return ans;
}

}
int main(){

double ans = 0;
while(~scanf("%d %d",&x,&N)){
if(N == 0) {
printf("%.6lf\n",(double)x);
}else{
printf("%.6lf\n",fun(x,0));
}
}
return 0;
}

/**************************************************************
Problem: 1166
User: phenix_Alice
Language: C++
Result: Accepted
Time:0 ms
Memory:1520 kb
****************************************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息