VT15 - Bộ ba hoàn hảo (bản dễ)

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Cho mảng số nguyên ~A~ có ~n~ phần tử được nhập từ bàn phím. Hãy viết chương trình tìm 3 phần tử ở các vị trí khác nhau trong mảng sao cho tích của 3 phần tử đó là lớn nhất. Sau đó, hãy in giá trị tích lớn nhất mà bạn tìm được lên màn hình

Input

  • Dòng 1 là số lượng phần tử của mảng ~n~
  • Dòng tiếp theo là ~n~ số nguyên tương ứng là các phần tử của mảng

Biết rằng

  • ~n \in N^*~ và  ~3 \le n \le 10^4~
  • ~|A_{ij}| \le 1000~

Output

Tích lớn nhất mà bạn tìm được

Sample

Input #1
5
1 2 3 4 5
Output #1
60

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    hoanganhdepzai  đã bình luận lúc 14, Tháng 5, 2024, 13:14

    mời các bạn tham khảo

    include <bits/stdc++.h>

    const int N=1e6; using namespace std; long long n,a[N],A,B,C,D; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } sort(a+1,a+n+1); A=a[n]a[n-1]a[n-2]; B=a[1]a[2]a[3]; C=a[1]a[2]a[n]; D=a[n]a[n-1]a[1]; cout<<max(A,max(B,max(C,D))); return 0; return 0; }


  • 1
    kkdh  đã bình luận lúc 10, Tháng 5, 2024, 15:05

    11


  • 1
    hoanganhdepzai  đã bình luận lúc 10, Tháng 5, 2024, 15:03

    *~$$[user:

    `

    • strong text

    `

    $$~*]


  • -2
    phamquocdung  đã bình luận lúc 21, Tháng 4, 2024, 13:31

    include<bits/stdc++.h>

    using namespace std; int a[10000],n; int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+1+n,greater<int>()); cout<<a[1]a[2]a[3]; }


  • -1
    lechinhhc  đã bình luận lúc 12, Tháng 4, 2024, 16:02
    #include "iostream" #include <bits/stdc++.h>

    using namespace std; typedef long long ll; ll n; int main() { ios::syncwithstdio(false); cin.tie(nullptr); cout.tie(nullptr); ll m1,m2; cin >> n; vector<ll> main; for (ll i = 0; i < n; i++) { ll x; cin >> x; main.push_back(x); } sort(main.begin(),main.end()); m1 = main[n-1]main[n-2]main[n-3]; m2 = main[0]main[1]main[n-1]; if (m1 > m2) cout << m1 << ""; else cout << m2 << ""; }


  • 0
    tienphat2101  đã bình luận lúc 24, Tháng 3, 2024, 16:07

    Đây là code full AC của mình:

    #include <bits/stdc++.h>
    using namespace std;
    int main(){
     int n;
     cin >> n;
     vector<int> arr;
     for(int i=0;i&lt;n;i++){
        int x;
        cin >> x;
        arr.emplace_back(x);
     }
     sort(arr.begin(),arr.end());
     cout << max(arr[0]*arr[1]*arr[arr.size()-1],arr[arr.size()-1]*arr[arr.size()-2]*arr[arr.size()-3])<< endl;
    }
    

    Giải thích: Chắc các bạn cũng đã làm qua cái bài tổng lớn nhất, tích lớn nhất của hai số trước khi qua làm bài này rồi. Ở các bài trước, đối với bài tích lớn nhất của hai số, ý tưởng của nó chỉ là sắp xếp mảng tăng dần(có thể dùng hàm sort()) rồi so sánh tích của 2 phần tử cuối và phần tử đầu. Vì khi mảng toàn dương thì dĩ nhiên 2 phần tử đầu khi nhân với nhau sẽ nhỏ hơn 2 phần tử cuối nhân với nhau, còn khi mảng có âm, thì sẽ dùng hàm max để so sánh cho gọn. Vì khi 2 phần tử âm nhân với nhau ra âm thì lại so sánh với 2 dương lớn nhất ở cuối mảng. Còn ở bài này, vì tận 3 số nên có nhiều trường hợp xảy ra. Nếu chỉ toàn dương thì không có gì để nói, làm tương tự như trên nhưng chỉ nhân thêm phần tử liền kề. Nhưng lỡ như mảng có phần tử âm thì sao. 2 âm nhân lại ra dương nhưng lại nhân 1 âm nữa lại thành âm nên khó so sánh(hoặc là chỉ có 2 âm). Nên ý tưởng của mình là như thế này, các bạn sẽ lấy sắp xếp tăng dần như bình thường rồi so sánh phần 2 phần tử đầu nhân với phần tử cuối(vì nếu âm thì 2 phần tử đầu sẽ âm sẽ ra dương thì so sánh bình thường, nếu không thì 2 âm nhân nhau ra dương lại nhân với phần tử cuối chắc chắn dương thì sẽ ra dương), còn ở vế sau thì chỉ cần so sánh 3 phần tử liền kề cuối mảng là được.


  • 1
    Shit  đã bình luận lúc 6, Tháng 2, 2024, 5:19

    minh xep theo giam dan a.sort(reverse=True) xong so sanh 2 cai max(a)a[1]a[2], min(a)max(a)a[len(a)-2] do neu co 2 so am nhan lai thi no ra duong ma ta lay cai duong do nhan cho max nua thif no la lon nhat


  • 5
    ______  đã bình luận lúc 3, Tháng 2, 2024, 7:49

    include <iostream>

    include <algorithm>

    using namespace std;

    int main() { int n; cin >> n; int arr[n]; for (int i = 0; i < n; i++) { cin >> arr[i]; } sort(arr, arr + n); int maxproduct = max(arr[0] * arr[1] * arr[n - 1], arr[n - 1] * arr[n - 2] * arr[n - 3]); cout << maxproduct << endl; return 0; }


  • -10
    top1sever  đã bình luận lúc 9, Tháng 1, 2024, 16:37

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -3
    Furina3101  đã bình luận lúc 10, Tháng 12, 2023, 8:50

    test 10 là gì vậy mn


  • -19
    Minhhieu8c  đã bình luận lúc 28, Tháng 11, 2023, 7:52

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -17
    NEHL  đã bình luận lúc 28, Tháng 11, 2023, 7:52

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -15
    neuoavs  đã bình luận lúc 18, Tháng 11, 2023, 7:15

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -3
    tuattsx3  đã bình luận lúc 19, Tháng 10, 2023, 12:55

    hướng dẫn: bước 1: sắp xếp mảng tăng dần; bước 2:do mảng có |a[i]| nên a[i] có thể âm => tìm max của 2 bộ số a[1] * a[2] * a[n] hoặc a[n-2] * a[n-1] * a[n]


  • 0
    Minh1901  đã bình luận lúc 29, Tháng 7, 2023, 6:58

    mn cho e xin ý tưởng bài này được không ạ :(


    • 2
      yoonicornsyndrome  đã bình luận lúc 10, Tháng 8, 2023, 5:13

      sắp xếp lại mảng từ bé đến lớn rồi so sánh tích của 3 phần tử cuối với tích của 2 phần tử đầu tiên với phần tử cuối, cái nào lớn hơn thì in ra


      • -1
        tienphat2101  đã bình luận lúc 24, Tháng 3, 2024, 16:01

        không được bạn nhé, có phần tử âm là sai, các bạn lên xem hướng dẫn của mình đi full AC


      • 0
        toan0123  đã bình luận lúc 3, Tháng 2, 2024, 4:34

        cho mình hỏi so sánh 2 phần tử đầu lmj v ạ


      • 0
        hailuacx  đã bình luận lúc 17, Tháng 1, 2024, 2:19

        Mảng có phần tử âm là toang đấy.


      • 0
        ngkhacbaolam2809  đã bình luận lúc 9, Tháng 9, 2023, 6:59

        ghê thế thanks


      • -3
        lch101  đã bình luận lúc 27, Tháng 8, 2023, 15:57

        Hay phết :v thế mà không nghĩ ra