洛谷 T61816 代数式的最值
生活随笔
收集整理的這篇文章主要介紹了
洛谷 T61816 代数式的最值
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
題目鏈接:https://www.luogu.org/problemnew/show/T61816
題目:已知$f(x)=ax^2 + bx + c$,求該式子的極值(最大值和最小值)。
輸入:輸入三個實數(shù)a, b, c。
輸出:
輸出最大值和最小值。
格式為:
```
Max: xxxxx
Min: xxxxx
```
保留五位小數(shù),若無最大值或最小值,則用正無窮oo或負無窮-oo表示。
【數(shù)據(jù)范圍】
對于100%的數(shù)據(jù),a,b,c的絕對值都在double范圍內(nèi)。
?
?
Solution:
這道題需要進行分類討論,具體如下:
當a>0時,該函數(shù)為二次函數(shù),且有最小值。最小值為(4*a*c-b*b)/(4*a);
當a<0時,該函數(shù)為二次函數(shù),且有最大值。最大值為(4*a*c-b*b)/(4*a);
否則,
當b!=0時,該函數(shù)為一次函數(shù),無最大最小值。
當b=0時,該函數(shù)恒等于c,最大最小值均為c。
?
代碼:
#include <bits/stdc++.h> using namespace std;typedef double d; const d eps = 1e-6; d a, b, c;d print(d x) {if (abs(x - 0.0) < 1e-6) x = 0.0;return x; }int main() {scanf("%lf %lf %lf", &a, &b, &c);a = print(a), b = print(b), c = print(c);if (a > 0.0) {printf("Max: oo\n");printf("Min: %.5lf\n", print((4.0 * a * c - b * b) / (4.0 * a)));}else if (a < 0.0) {printf("Max: %.5lf\n", print((4.0 * a * c - b * b) / (4.0 * a)));printf("Min: -oo\n");}else {if (b != 0.0) {printf("Max: oo\n");printf("Min: -oo\n");}else {printf("Max: %.5lf\n", print(c));printf("Min: %.5lf\n", print(c));}}return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/wlzhouzhuan/p/10161243.html
總結(jié)
以上是生活随笔為你收集整理的洛谷 T61816 代数式的最值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Google advertiser ap
- 下一篇: [OI]字符串DP小结