1 条题解
-
0
C++ :
#include <stdio.h> #include <math.h> #define MIN_ERR 1e-4 double a,b,c,d; double f(double x) { return a*x*x*x+b*x*x+c*x+d; } double find_sol(double min,double max) { if (max-min<MIN_ERR) return (min+max)/2; else { double f1,f2,f3; f1=f(min); f2=f((min+max)/2); f3=f(max); if (f2==0) return (min+max)/2; else if (f1*f2<0) return find_sol(min,(min+max)/2); else return find_sol((min+max)/2,max); } } main() { double x1,x2; scanf("%lf%lf%lf%lf",&a,&b,&c,&d); if (a<0) { a=-a; b=-b; c=-c; d=-d; } x1=(-2*b-sqrt(4*b*b-12*a*c))/(a*6); x2=(-2*b+sqrt(4*b*b-12*a*c))/(a*6); printf("%.2lf %.2lf %.2lf\n",find_sol(-101,x1),find_sol(x1,x2),find_sol(x2,101)); }
Java :
import java.util.Scanner; public class Main { static double m[] = new double[3]; static int n=0; static boolean f(int a, int b, int c, int d) { for(double i=-100;i<=100;i++) { if(a*i*i*i+b*i*i+c*i+d==0) { m[n]=i; n++; } } if(Math.abs(m[0]-m[1])>=1 && Math.abs(m[0]-m[2])>=1 && Math.abs(m[1]-m[2])>=1) { return true; } else return false; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); int d = sc.nextInt(); if(f(a,b,c,d)) { System.out.printf("%.2f ",m[0]); System.out.printf("%.2f ",m[1]); System.out.printf("%.2f ",m[2]); } sc.close(); } }
- 1
信息
- ID
- 1288
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者