1605
1322
ảo tht đấy:vv, tỉ lệ làm sai 100%:)))
các idol giúp e vs ạ:vv, toàn TLE
#include<bits/stdc++.h>
using namespace std;
bool SNT(int n)
{
if(n < 2) return false;
if(n <= 3) return true;
if(n%2 == 0 || n%3 == 0) return false;
for(int i = 5; i*i <= n; i+=6)
{
if(n%i == 0 || n%(i + 2) == 0) return false;
}
return true;
}
void P(int L, int R)
{
int dem = 0;
for(int i = L; i <= R; i++)
{
if(SNT(i))
dem++;
}
cout<<dem<<endl;
}
int main()
{
int N;
cin>>N;
while(N--)
{
int L, R;
cin>>L>>R;
P(L, R);
}
}
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
#include <bits/stdc++.h>
using namespace std;
const int N = 1e7;
using ll = long long;
bool f[N + 5];
int d[N + 5];
void sang() {
memset(f, 1, sizeof(f));
f[0] = f[1] = 0;
for (int i = 2; i * i <= N; i++) {
if (f[i]) {
for (int j = i * i; j <= N; j += i) {
f[j] = 0;
}
}
}
d[0] = 0;
for (int i = 1; i <= N; i++) {
d[i] = d[i - 1] + f[i];
}
}
void h(int L, int R) {
bool kt[R - L + 1];
memset(kt, 1, sizeof(kt));
if (L == 1)
kt[0] = 0;
for (int i = 2; i * i <= R; i++) {
int s = max(i * i, (L + i - 1) / i * i);
for (int j = s; j <= R; j += i) {
kt[j - L] = 0;
}
}
int s1 = 0;
for (int i = 0; i <= R - L; i++) {
if (kt[i])
s1++;
}
printf("%d\n", s1);
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int t;
scanf("%d", &t);
sang();
while (t--) {
int L, R;
scanf("%d %d", &L, &R);
if (R <= N) {
printf("%d\n", d[R] - d[L - 1]);
} else {
h(L, R);
}
}
return 0;
}
`-``color{#FFFFFF}{•O}``color{#CCFFFF}{W}``color{#99FFFF}{O}``color{#66FFFF}{l}``color{#33FFFF}{e}``color{#00FFFF}{g}``color{#66CCFF}{e}``color{#33CCFF}{n}``color{#00CCFF}{d}``color{#00CCCC}{l}``color{#33CCCC}{p}``color{#66CCCC}{8}``-`
Hãy giúp mọi người biết câu trả lời này thế nào?
\begin{array}{c} \color{#FFFFFFff}{H}\color{#E7E7E7ff}{o}\color{#CFCFCFff}{r}\color{#B7B7B7ff}{i}\color{#9F9F9Fff}{z}\color{#878787ff}{o}\color{#6F6F6Fff}{n} \end{array} $\\$
#include <bits/stdc++.h>
using namespace std;
const int N = 1e7;
using ll = long long;
bool a[N + 5];
int dem[N + 5];
void sang() {
memset(a, 1, sizeof(a));
a[0] = a[1] = 0;
for (int i = 2; i * i <= N; i++)
if (a[i])
for (int j = i * i; j <= N; j += i)
a[j] = 0;
dem[0] = 0;
for (int i = 1; i <= N; i++)
dem[i] = dem[i - 1] + a[i];
}
void d(int l, int r) {
int x = r - l + 1;
vector<bool> v(x, 1);
if (l == 1) v[0] = 0;
for (int i = 2; i * i <= r; i++) {
int y = max(i * i, (l + i - 1) / i * i);
for (int j = y; j <= r; j += i)
v[j - l] = 0;
}
int c = 0;
for (int i = 0; i < x; i++)
if (v[i]) c++;
printf("%d\n", c);
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int t;
scanf("%d", &t);
sang();
while (t--) {
int l, r;
scanf("%d %d", &l, &r);
if (r <= N) printf("%d\n", dem[r] - dem[l - 1]);
else d(l, r);
}
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
1605
1322
v làm theo e mà dùng printf vs scanf có đk a :vv
ko nha e :)
nó chỉ tối ưu vào ra thôi chứ thuật toán thì vx pk sửa
1605
1322
:vvv
1605
1322
trc h e tưởng printf vs scanf như cin, cout
Bảng tin
645
11520
356
vc dùng scanf vs printf
645
11520
356
toàn dùng cin cout thảo nào toàn TLE :I
645
11520
356
optimize gần 30p chả làm đc j :I