[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.



  • -2
    thanhnay29  đã bình luận lúc 13, Tháng 2, 2025, 7:58

    ok cảm ơn và kệ bạn


  • 0
    VDev  đã bình luận lúc 18, Tháng 1, 2025, 13:47

    FULL AC

    #include <bits/stdc++.h>
    #include <iomanip>
    #include <cmath>
    #include <climits>
    #define ll long long
    using namespace std;
    ll a[10000011];
    ll cnt = 0, s = 0, mark[10000011], trai = 0, phai = 0;
    bool nt(ll n){
        if(n < 2){
            return false;
        }else
        for(ll i = 2; i <= sqrt(n); i++){
            if(n % i == 0){
                return false;
            }
        }
        return true;
    }
    int main(){
        ll n;
        cin >> n;
        for(ll i = 0; i < n; i++){
            cin >> a[i];
        }
        for(ll i = 0; i < n; i++){
                trai = 0, phai = 0;
                for(ll j = 0; j < i; j++){
                    trai += a[j];
                }
                for(ll h = i + 1; h < n; h++){
                    phai += a[h];
                }
                if(nt(trai) && nt(phai)){
                    cout << i << " ";
                }
        }
        return 0;
    }
    

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

    include<bits/stdc++.h>

    using namespace std; bool snt(int n) { if(n<=1) return 0; for(int i=2;i<=sqrt(n);i++){ if(n%i==0){ return 0; } } return 1; } int main(){ int n,s=0; cin>>n; int a[n]; for(int i=0;i<n;i++){ cin>>a[i]; s+=a[i]; } for(int i=0;i<n;i++){ int tt=0; int tp=0; for(int j=0;j<i;j++){ s+=a[j]; } for(int k=i+1;k<n;k++){ s+=a[k]; } if(snt(tp)&&snt(tt)) cout<<i<<" "; } return 0; } sai ở đâu vậy??


  • 0
    khiem101701  đã bình luận lúc 3, Tháng 12, 2024, 10:25

    include <iostream>

    include <math.h>

    using namespace std;

    bool ktsnt(int x){ if(x <= 1) return false; else{ for (int i = 2;i <= sqrt(x);i++){ if(x % i == 0){ return false; } } } return true; }

    int main(){ int n; cin>>n; int arr[n]; for (int i = 0;i < n;i++){ cin>>arr[i]; } for(int i = 1;i < n-1;i++){ int tongtrai = 0; int tongphai = 0; for(int j = 0;j < i;j++){ tongtrai += arr[j]; } for(int j = i+1;j < n;j++){ tongphai += arr[j]; } if(ktsnt(tongtrai) && ktsnt(tongphai)){ cout<<i<<" "; } } return 0; }


  • 0
    Chu_manh_thang_cpp  đã bình luận lúc 30, Tháng 11, 2024, 9:04

    def snt(n): kt = True if n < 2: kt = False else: for i in range(2, int(n ** 0.5) + 1): if n % i == 0: kt = False break return kt n = int(input()) a = list(map(int,input().split())) for i in range(n): s1 = 0 s2 = 0 for j1 in range(i): s1 += a[j1] for j2 in range(i + 1, n): s2 += a[j2] if snt(s1) and snt(s2): print(i,end= ' ')


  • 0
    Dungx_2008  đã bình luận lúc 25, Tháng 11, 2024, 15:10

    include <bits/stdc++.h>

    define ll long long

    define name ""

    define N 100000

    using namespace std; int pre[N],a[N],n; bool prime(int n) { if(n<2) return false; for(int i=2;i<=sqrt(n);i++) { if(n%i == 0) return false; } return true; } int main() { iosbase::syncwith_stdio(0); cin.tie(0);cout.tie(0); if(fopen(name".INP","r")) { freopen(name".INP","r",stdin); freopen(name".OUT","w",stdout); } cin >> n; for(int i=1;i<=n;i++) cin >> a[i]; pre[0] = 0; pre[1] = a[1]; for(int i=2;i<=n;i++) pre[i] = pre[i-1] + a[i]; for(int i=2;i<n;i++) { if(prime(pre[i-1] - pre[0]) && prime(pre[n] - pre[i])) cout << i - 1 << " "; } return 0; }


    • 0
      Dungx_2008  đã bình luận lúc 25, Tháng 11, 2024, 15:11

      include <bits/stdc++.h>

      define N 100000

      using namespace std; int pre[N],a[N],n; bool prime(int n) { if(n<2) return false; for(int i=2;i<=sqrt(n);i++) { if(n%i == 0) return false; } return true; } int main() { cin >> n; for(int i=1;i<=n;i++) cin >> a[i]; pre[0] = 0; pre[1] = a[1]; for(int i=2;i<=n;i++) pre[i] = pre[i-1] + a[i]; for(int i=2;i<n;i++) { if(prime(pre[i-1] - pre[0]) && prime(pre[n] - pre[i])) cout << i - 1 << " "; } return 0; }


  • 1
    duongnc_pt  đã bình luận lúc 30, Tháng 10, 2024, 15:48 sửa 2

    Code cho ai cần nhé

    https://ideone.com/CQpDhx

    Ac cho mình xin ^


  • 0
    Hien_648  đã bình luận lúc 20, Tháng 10, 2024, 0:53

    Ai full test cho xin code với ạ. Cảm ơn nhiều


  • 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 =))


    • -4
      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ố


  • -1
    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


    • 0
      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é!