Cho mảng A[] gồm N phần tử, bạn hãy tìm dãy con liên tiếp đều là số nguyên tố dài nhất. Nếu có nhiều dãy con có cùng độ dài thì in ra dãy con có tổng lớn nhất, và nếu có nhiều dãy con có cùng độ dài lớn nhất và có cùng tổng thì lấy dãy con đầu tiên. Trong trường hợp không tồn tại dãy con liên tiếp đều là số nguyên tố thì in ra NOT FOUND.
Gợi ý :
Bước 1. Sàng số nguyên tố để kiểm tra nhanh hơn
Bước 2. Duyệt qua mảng và dùng biến đếm, nếu A[i] là số nguyên tố => tăng đếm còn ko thì cập nhật đếm xem có lớn hơn kỷ lục đang có hay ko, nếu lớn hơn thì cập nhật, còn nếu chỉ bằng kỉ lục thì so sánh thêm tổng của dãy con. Reset biến đếm và tổng về 0 để xét lại dãy mới.
Đầu vào
Dòng 1 là N : số lượng phần tử trong mảng
Dòng 2 là N số trong mảng cách nhau 1 dấu cách
Giới hạn
1<=N<=10^6
0<=A[i]<=10^6
Đầu ra
Dòng 1 in độ dài dãy con
Dòng 2 in dãy con thỏa mãn
Ví dụ :
Input 01
10
3 1 1 11 7 13 5 0 10 5
Output 01
4
11 7 13 5
Comments
include <iostream>
using namespace std;
int prime[1000001];
void sieve() { for (int i = 0; i <= 1000000; i++) { prime[i] = 1; // Ban đầu giả sử tất cả các số đều là nguyên tố } prime[0] = prime[1] = 0; // 0 và 1 không phải số nguyên tố
}
int main() { sieve(); // Tạo mảng sàng số nguyên tố int n; cin >> n; // Nhập số lượng phần tử trong mảng int a[n]; for (int i = 0; i < n; i++) { cin >> a[i]; }
}
include <bits/stdc++.h>
using namespace std; int n,a[1000000],s[1000000],res=0,maxx=0; string N; int kiem(int doiso){ for(int i=2;i*i<=doiso;i++){ if(doiso%i==0) return 0; } return 1; } int main() { //freopen("codedao.inp","r",stdin); //freopen("codedao.out","w",stdout);
}
This comment is hidden due to too much negative feedback. Show it anyway.
include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll snt[1000001];
void sang() { memset(snt, 1, sizeof(snt));
}
int main() { sang(); iosbase::syncwith_stdio(false); cin.tie(NULL); cout.tie(NULL);
}
This comment is hidden due to too much negative feedback. Show it anyway.
Anh đẹp trai nào ac rồi vào xem code giúp em với
mng ơi cái test thứ 5 là j v ạ, e sai test đấy ai AC r ghé qua code e với
Cho em hỏi test 4 với test 5 là gì v ạ??
ai AC rồi vào xem code em có thiếu sót gì ạ :))
Cái đoạn mà a[i] == 1 trong cái điều kiện anh thiếu trường hợp cnt < res phải cập nhật thg cnt = 0,cursum= 0 nx á,với đề nói nếu lấy tổng bằng nhau thì lấy dãy đầu tien nên cái đoạn kia a sửa lại thành cursum > max_sum là ok
À chắc bản best solve của mình là do mình spam thay dấu đấy, chứ đúng là > thôi :DD
Ôi vc cảm ơn bạn nhớ :33