首先這程式是錯的,會卡在80%
並且在有兩解的情況下計算小數會不准
在沒有特定測資的情況下我也只不出哪裡有錯,歡迎大神討論
如果你是新手建議直接暴搜
以下是我的程式碼給大家參考
#include<iostream>
#include<vector>
#include<sstream>
#include<algorithm>
#include<math.h>
using namespace std;
int A, B, C;
int f(int x) {
return A * x * x + B * x + C;
}
int main() {
int a[3], b[3];
int n;
for (int i = 0; i < 3; i++)cin >> a[i];
for (int i = 0; i < 3; i++)cin >> b[i];
cin >> n;
A = b[0] + a[0] ;
B = b[1] - a[1] -2*n*a[0];
C = b[2] + a[2]+n*n*a[0]+n*a[1];
int d = B * B - 4 * A * C;
vector<int> v={0,n};
if (d == 0)if (A * B >= 0)v.push_back(-B / (2 * A));
else if (d > 0) {
int tmp1 = (-B + sqrt(d)) /(2 * A);
if (tmp1 > 0)v.push_back(tmp1);
int tmp2 = (-B - sqrt(d)) / (2 * A);
if (tmp2 > 0)v.push_back(tmp2);
}
vector<int> ans;
for (int i = 0; i < v.size(); i++) {
ans.push_back(f(v[i]));
}
cout << *max_element(ans.begin(), ans.end())<<"\n";
}
我知道可視性有點差,就將就一下吧!
如果有其他見解歡迎傳e-mail和我討論