zoukankan      html  css  js  c++  java
  • [洛谷U62364]三次函数极值

    U62364 三次函数极值

    题面

    给定一个三次函数(f(x)=a_3x^3+a_2x^2+a_1x+a_0)
    求其极值。

    格式

    输入包括一行四个整数(a_3,a_2,a_1,a_0)

    输出包括几个坐标或-1.两个坐标时请先输出横坐标较小的。

    样例#1

    输入

    2 -10 5 1
    

    输出

    (0.272233,1.66041)(3.0611,-20.0308)
    

    样例#2

    输入

    1 0 0 0
    

    输出

    -1
    

    数据限制

    规模 (a_i)
    40% ([-9,10])
    60% ([-299,700])

    分析

    当三次函数取得极值时,其导函数(f'(x)=0)
    所以把三次函数求出导函数后,只需解一个一元二次方程。

    解法

    #include<bits/stdc++.h>
    using namespace std;
    double a,b,c,d;
    double calc(double x){
    	return ((a*x+b)*x+c)*x+d;
    }
    double l,m,n,delta;
    int main(){
    	cin>>a>>b>>c>>d;
    	l=3*a;
    	m=2*b;
    	n=c;
    	delta=m*m-4*l*n;
    	if(delta>0){
    		double x1=(-m-sqrt(delta))/(2*l);
    		double x2=(-m+sqrt(delta))/(2*l);
    		cout<<"("<<x1<<","<<calc(x1)<<")("<<x2<<","<<calc(x2)<<")";
    	}else{
    		cout<<"-1";
    	}
    }
    

    数据

  • 相关阅读:
    hdu1233
    zoj 3529
    hdu 2516 取石子游戏
    组合博弈理论
    博弈——sg函数的原理和优化
    博弈及sg函数
    poj2039
    hdu 1250
    C# 类的继承和访问
    C# 索引
  • 原文地址:https://www.cnblogs.com/water-lift/p/10400694.html
Copyright © 2011-2022 走看看