NC16694. [NOIP2001]一元三次方程求解
描述
输入描述
一行,4个实数A,B,C,D。
输出描述
一行,3个实根,并精确到小数点后2位。
示例1
输入:
1 -5 -4 20
输出:
-2.00 2.00 5.00
C++ 解法, 执行用时: 4ms, 内存消耗: 416K, 提交时间: 2022-07-26 17:26:28
#include<stdio.h> #include<math.h> double i,a,b,c,d; int main() { scanf("%lf%lf%lf%lf",&a,&b,&c,&d); for(i=-100;i<100;i+=0.001) { if(fabs(a*i*i*i+b*i*i+c*i+d)<0.001) printf("%.2lf ",i); } }
Pascal(fpc 3.0.2) 解法, 执行用时: 1ms, 内存消耗: 256K, 提交时间: 2018-10-23 14:32:36
var a,b,c,d,x:real; i:longint; begin read(a,b,c,d); for i:=-10000 to 10000 do if abs(a*(i/100)*(i/100)*(i/100)+b*(i/100)*(i/100)+c*(i/100)+d)<0.01 then begin x:=i/100; write(x:0:2,' '); end; end.
pypy3 解法, 执行用时: 110ms, 内存消耗: 26096K, 提交时间: 2021-11-28 20:37:39
a,b,c,d = map(float, input().split()) x = -100 while x < 100.01: y = a*x**3 + b*x**2 + c * x + d if -0.01< y < 0.01: print("%.2f" % x, end=" ") x = x + 0.01
Python3 解法, 执行用时: 60ms, 内存消耗: 4544K, 提交时间: 2023-03-11 17:15:27
a,b,c,d=map(float,input().split()) x=-100 while x<=100: if -0.01<a*x**3+b*x**2+c*x+d<0.01: print("%.2f"%x,end=" ") x+=0.01