ZZNU夏季挑战赛—大家好 我是水题

问题 : 大家好 我是水题

时间限制: 1 Sec  内存限制: 128 MB

题目描述

给出一个最简的一元三次方程式,求出该方程式的递增区间。方程式保证出现x^3,x前系数不会为0并且绝对值小于520。 无穷用oo表示     空集用ooo表示,直接输出ooo不用带括号。无需考虑中括号“[ ]”,使用“()”即可。

输入

每行一个最简式的一元三次方程式。

输出

该方程式的递增区间。如有多个用空格隔开,正常数字保留两位有效数字。  

样例输入

y=x^3+x
y=x^3+2x^2+3

样例输出

(-oo,+oo)
(-oo,-1.33) (0.00,+oo)

求一元三次函数的递增区间 y=ax^3+bx^2+cx+d;

只需求导,使之成为一元二次函数,只要是一元二次函数大于零就是一元三次函数的递增区间。所以实际上就是求一元二次方程的根。3a  2b  c  这三者之间的关系。

利用求根公式x=-b(-+)sqrt(b*b-4ac)/(2a)求出相应的解,根据a的正负来解决

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<math.h>
using namespace std;

#define LL long long
#define N  1006

int Q[N],falg;
char str[N];

void prime(char str[])
{
    int len=strlen(str);
    int d=1,e=0,f=0,w=0;
    for(int i=0; i<len; i++)
    {
        if(str[i]>='0'&&str[i]<='9')
        {
            if(!w) e=e*10+str[i]-'0';
            else f=f*10+str[i]-'0';
        }
        else if(str[i]=='x')
            w=1;
        else if(str[i]=='+'||str[i]=='-')
        {
            if(w&&!f) f=1;
            if(e==0&&w) e=1;
            Q[f]+=d*e;
            e=f=w=0;
            if(str[i]=='-') d=-1;
            else d=1;
        }
    }
    if(!e) e=1;
    if(w&&!f) f=1;
   Q[f]+=e*d;
}

int main()
{
    while(scanf("%s",str)!=EOF)
    {
        falg=0;
        memset(Q,0,sizeof(Q));
        prime(str+2);///提取系数
        int a=3*Q[3];
        int b=2*Q[2];
        int c=Q[1];
        if(b*b-4*a*c<=0)
        {
            if(a>0) printf("(-oo,+oo)\n");
            else printf("ooo\n");
            continue;
        }
        double x1=(-b-sqrt(1.0*b*b-4.0*a*c))/2/a;
        double x2=(-b+sqrt(1.0*b*b-4.0*a*c))/2/a;
        if(x1>x2) swap(x1,x2);///设置存放位置
        if(fabs(x1)<1e-8) x1=0.00;///避免出现-0.00的现象
        if(fabs(x2)<1e-8) x2=0.00;
        if(a>0) printf("(-oo,%.2f) (%.2f,+oo)\n",x1,x2);
        else printf("(%.2f,%.2f)\n",x1,x2);
    }
    return 0;
}
/**************************************************************
    Problem: 2168
    User: 2017020004
    Language: C++
    Result: 正确
    Time:0 ms
    Memory:2040 kb
****************************************************************/

猜你喜欢

转载自blog.csdn.net/qq_40564464/article/details/81865903