这道c语言的竞赛题谁会啊!!!
答案:1 悬赏:70 手机版
解决时间 2021-01-31 01:54
- 提问者网友:情歌越听越心酸
- 2021-01-30 05:34
这道c语言的竞赛题谁会啊!!!
最佳答案
- 五星知识达人网友:话散在刀尖上
- 2021-01-30 06:11
x^x = n
则:x log n (x) = log n( n ) = 1,所以有 log n (x) = 1/x, 所以log n (x) - 1/x = 0;
所以这个问题就转化成了 求x,使得log n (x) - 1/x = 0; 也就是xy平面上第一象限内, y=log n (x)和 y=1/x的交点的x的值(一定在1和n之间)。
#include
#include
double func(double x,int n){ return (log(x)/log(n)-1/x); }
double code(int n){
double f1,f0,f,x0=1,x1=n,x;
f1 = func(x1,n);
f0 = func(x0,n);
do{
x=(x1+x0)/2;
f = func(x,n);
if(f>0) { x1=x; f1=f; }
else { x0=x; f0=f; }
} while(fabs(f)>1e-10) ;
return x;
}
int main(){
int n; char s[20];
while(scanf("%d",&n)==1)
printf("%.6f
",code(n));
}
则:x log n (x) = log n( n ) = 1,所以有 log n (x) = 1/x, 所以log n (x) - 1/x = 0;
所以这个问题就转化成了 求x,使得log n (x) - 1/x = 0; 也就是xy平面上第一象限内, y=log n (x)和 y=1/x的交点的x的值(一定在1和n之间)。
#include
#include
double func(double x,int n){ return (log(x)/log(n)-1/x); }
double code(int n){
double f1,f0,f,x0=1,x1=n,x;
f1 = func(x1,n);
f0 = func(x0,n);
do{
x=(x1+x0)/2;
f = func(x,n);
if(f>0) { x1=x; f1=f; }
else { x0=x; f0=f; }
} while(fabs(f)>1e-10) ;
return x;
}
int main(){
int n; char s[20];
while(scanf("%d",&n)==1)
printf("%.6f
",code(n));
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯