原问题
单点时限: 2.0 sec
内存限制: 512 MB
Write a program to input an integer n, and to output square root of n with format %f.
输入格式
input an integer n.
输出格式
output square root of n.
样例
input
120
output
10.954451
input
100
output
10.000000
input
1
output
1.000000
分析与代码
这个问题可以使用math.h库中的函数解决,但这样毕竟失去了意味。因此最终决定使用牛顿法去求根号值(可以google一下牛顿法怎么逼近方程的解的)
#include <stdio.h>
double square(int x);
int main(void)
{
int n;
double ret;
scanf("%d", &n);
ret = square(n);
printf("%.6f", ret);
return 0;
}
double square(int a)
{
double x = a/2.0;
while(((x * x - a) > 0? x * x - a:a - x * x)>= 0.0000001){
x = (x + a / x) / 2;
}
return x;
}
注意,输出有格式要求
结果
注意输入有0