#37168: 關於公式解


kesoner666@gmail.com (楊虛於)

學校 : 高雄市立新興高級中學
編號 : 189616
來源 : [163.14.5.28]
最後登入時間 :
2024-04-18 17:58:59
f312. 1. 人力分配 -- 2020年10月APCS | From: [101.137.135.67] | 發表日期 : 2023-08-23 17:00

首先這程式是錯的,會卡在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和我討論

 
ZeroJudge Forum