列表

详情


NC205829. 解方程

描述

牛能作为一个学霸,非常擅长解方程。
有一天,他拿到了一个方程:

牛能当然一下子就解出了这个方程。但他想考考聪明的你,这个方程的解的多少?

输入描述

三个正整数  

输出描述

如果解存在,请输出方程的解x的值,若你和正确答案的误差不超过  ,则认为你的答案正确。
如果解不存在,则输出

示例1

输入:

3 5 1

输出:

1.00000000000000

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang 3.9) 解法, 执行用时: 2ms, 内存消耗: 376K, 提交时间: 2020-09-09 14:48:19

#include<stdio.h>
#include<math.h>
int main(){
	double x=1;
	double a,b,c;
	scanf("%lf %lf %lf",&a,&b,&c);
	while(fabs(pow(x,a)+b*log(x)-c)>=0.0000001){
		x=x-(pow(x,a)+b*log(x)-c)/(a*pow(x,a-1)+b/x);
	}
	printf("%.14f",x);
	return 0;
}

C++(clang++11) 解法, 执行用时: 11ms, 内存消耗: 528K, 提交时间: 2021-01-21 17:07:13

#include<bits/stdc++.h>
using namespace std;
int main()
{
	double x=1.0;
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	while(abs(pow(x,a)+b*log(x)-c)>=1e-7)
	{
		x=x-(pow(x,a)+b*log(x)-c)/(a*pow(x,a-1)+b/x);
	}
	printf("%.8lf\n",x);
}

C++(g++ 7.5.0) 解法, 执行用时: 3ms, 内存消耗: 472K, 提交时间: 2023-03-06 16:08:26

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a,b,c;cin>>a>>b>>c;
	double x=1;
	while(fabs(pow(x,a)+b*log(x)-c)>0.0000001)
	{
		x=x-(pow(x,a)+b*log(x)-c)/(a*pow(x,a-1)+b/x);
	}
	printf("%.14f",x);
	return 0;
}

Python3(3.9) 解法, 执行用时: 44ms, 内存消耗: 6864K, 提交时间: 2021-04-08 21:28:51

import math
a,b,c=map(int,input().split())
l=c
r=0
while r<l:
    mid=(r+l)/2
    f=mid**a+b*(math.log(mid))
    if abs(f-c)<0.0000001:
        break
    if f>c:
        l=mid
    else:r=mid
print('%.14f'%mid)

上一题