[Mảng 1 Chiều Cơ Bản]. Bài 10. Cân bằng nguyên tố

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
Input: stdin
Output: stdout

Tác giả:
Nguồn bài:
28Tech
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Cho mảng số nguyên A[] gồm N phần tử, hãy liệt kê các chỉ số i trong mảng thỏa mãn : Tổng các phần tử bên trái i và tổng các phần tử bên phải i là các số nguyên tố

Gợi ý :

Đối với mỗi chỉ số i xây dựng 1 vòng for duyệt từ 0 tới i - 1 để tính tổng các số bên trái của i, 1 vòng for duyệt từ i + 1 tới N - 1 để tính tổng các phần tử nằm bên phải của i => Kiểm tra cả 2 tổng là số nguyên tố thì in ra chỉ số i, chú ý reset biến tổng trái và phải tại mỗi vòng lặp.


Đầu vào

Dòng đầu tiên là số nguyên dương N

Dòng thứ 2 gồm N số nguyên viết cách nhau một vài khoảng trắng


Giới hạn

1<=N<=1000

-10^3<=A[i]<=10^3


Đầu ra

In ra các chỉ số thỏa mãn trên một dòng, các số cách nhau một khoảng trắng


Ví dụ :

Input 01
5
53 5 69 47 19
Output 01
3

Bình luận

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



  • 0
    Thanhall201  đã bình luận lúc 4, Tháng 8, 2024, 15:56

    Vãi thật ae ạ! Bài này nó bắt các tổng trái và tổng phải của i đồng thời là số nguyên tố thì ta bỏ qua cả a[0] và a[n-1] vì bên trái a[0] là 0 kh phải snt bên phải a[n-1] là 0 cũng không phải là số nguyên tố. Tui mất cả tiếng để ktra đi ktra lại cái nộp thử nó lại đúng hết test =))


    • 0
      Nguyen_Hoang_Dat08  đã bình luận lúc 9, Tháng 9, 2024, 7:47

      vãi thanh niên này lm biếng thấy bà cố


  • 0
    hackerlo2803  đã bình luận lúc 30, Tháng 6, 2024, 19:45

    include <bits/stdc++.h>

    using namespace std;

    int is_nt[1000001];

    void sang(){ memset(isnt, 1, sizeof(isnt)); isnt[0] = isnt[1] = 0; for (int i = 2 ; i < sqrt(1000000) ; i++){ for (int j = i*i ; j < 1000000 ; j+=i){ is_nt[j] = 0; } } }

    int main() { // iosbase::syncwith_stdio(false); // cin.tie(NULL); // cout.tie(NULL);

    sang();
    
    int n; cin >> n;
    
    int a[n];
    int sum = 0;
    for (int i = 0 ; i < n ; i++) {
        cin >> a[i];
        sum += a[i];
    }
    
    for (int i = 0 ; i < n ; i++){
        int left = 0;
        int right = 0;
        for (int t = 0 ; t <= i - 1 ; t++){
            left += a[t];
        }
        for (int p = n - 1 ; p >= i + 1 ; p--){
            right += a[p];
        }
        // cout << i << ". " << left << " " << right << "\n";
        if (is_nt[right] && is_nt[left] && right > 0 && left > 0) {
            cout << i;
            break;
        }
    }
    
    return 0;
    

    } sai ở đâu ạ


    • 0
      tranminhnhat_2k9  đã bình luận lúc 16, Tháng 7, 2024, 10:22

      tại bạn chx cách số một khoảng trắng sau khi in ra cout <<i<<" ";


  • 0
    longhk2012  đã bình luận lúc 2, Tháng 6, 2024, 13:46

    sao full test dc vay mn mong mn giup


    • -1
      hailuacx  đã bình luận lúc 6, Tháng 6, 2024, 3:03

      Dùng mảng cộng dồn bạn nhé!