Xem giúp lỗi bài tìm trong đoạn [L,R] có bao nhiêu số nguyên tố có tổng chữ số chia hết cho 5

Chào ạnh chị. Đề bài là nhập t, có t bộ test (t<=100). Nhập L, R. Tìm xem trong đoạn [L;R] có bao nhiêu số nguyên tố chia hết cho 5? Giới hạn: 0 < L, r <=10^6. Nhưng sao em làm bài này cái phần tử cuối nó cứ ra số 0 vậy ạ? Em cám ơn ạ

#include <bits/stdc++.h>

using namespace std;
  int main()
{
    int t, a[100][2], phantu=43327;
    cin >> t;
    int b[50000];                     // Trong đây có nhiều phần tử mình khai báo, nhưng mình sẽ ko nhẵn qua do nhiều quá
        for (int i=1; i<=t; i++)
            for (int j=1; j<=2; j++) cin >> a[i][j];
        for (int i=1; i<=t; i++)
        {
            int trai=a[i][1], phai=a[i][2], l=1, r=phantu;
            while (b[l]<=trai) l++;
            while (b[r]>=phai) r--;
            cout << r-l << " ";
        }
        return 0;
    }

Trước tiên là bạn cần sửa lại các chỉ số, trong C++, chỉ số phần tử của mảng bắt đầu là 0, không phải 1
Nên mảng a của bạn là a[0->99][0->1], bạn truy xuất a[i][2] là sai rồi …
Cú pháp nhìn sơ qua là thế, còn bạn tính toán sao mình không biết :smile:

Snt là số có 2 uoc là 1 và chính nó. Nếu chia hết 5 thì chỉ có duy nhất 5 thoã mãn.

Sửa rồi nhưng vẫn lỗi anh :frowning:

à em nhầm, tổng các chữ số trong nguyên tố chia hết cho 5 anh :smiley:

  • dùng sàng nguyên tố tìm tất cả snt<10^6
  • tính tổng các chữ số của snt
  • dùng qhd để lưu tổng từ 0- cuối vào mảng dp (cộng dồn các số thoã mãn)
  • kq= dp[r]-dp[l-1]
1 Like

quy hoạch động chưa học anh :frowning: Mà code em bên trên vì s nó lại có số 0 ở cuối mảng anh nên làm bị sai anh

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?