P1865 A % B Problem 93pts #6WA求助!!!

P1865 A % B Problem

@[Caiyingqi_01](/user/670355) 求关注~ ```cpp #include<iostream> #include <cstdio> using namespace std; #define maxn 10000000 struct node { int x = 1; int prime = 0; int vis = 0; }pri[maxn]; void Screening(int n) { pri[0].vis = pri[1].vis = 1; int cnt = 0; for (int i = 2; i <= n; i++) { if (!pri[i].vis) pri[cnt++].prime = i; for (int j = 0; j < cnt && i * pri[j].prime <= n; j++) { pri[i * pri[j].prime].vis = 1; if (i % pri[j].prime == 0) break; } } } int main() { int n, m; scanf("%d %d", &n, &m); Screening(m); int l, r; int ans = 0; for (int i = 2; i <= m; i++) { if (!pri[i].vis) pri[i].x += pri[i - 1].x; else pri[i].x = pri[i - 1].x; } for (int i = 0; i < n; i++) { scanf("%d %d", &l, &r); if (l >= 1 && l <= m && r >= 1 && r <= m) { ans = pri[r].x - pri[l - 1].x; printf("%d\n", ans); ans = 0; l = 0; r = 0; } else printf("Crossing the line\n"); } return 0; } ```
by JustinXiaoJunyang @ 2022-08-19 17:21:46


关注了,但不知道我的代码哪里出了问题呢
by Cyq_Lyw_01 @ 2022-08-19 17:25:51


@[Caiyingqi_01](/user/670355) 你的那个 `if` 语句少了两个判断条件 `l >= n` 和 `r < 1`
by jimmyfj @ 2022-08-19 18:13:10


@[Caiyingqi_01](/user/670355) 调好了, 记得开 `long long` ```cpp #include <bits/stdc++.h> using namespace std; long long n, m, l, r, ans, a[1000001], cnt = 1; bool vis[1000001]; void init(){ for(int i = 2; i <= n; i++){ if(!vis[i]){ a[cnt] = i; cnt++; } for(int j = 1; j < cnt; j++){ if(1ll * i * a[j] > n){ break; } vis[i * a[j]] = true; if(i % a[j] == 0){ break; } } } } int main(){ cin >> m >> n; init(); for(int i = 0; i < m; i++){ cin >> l >> r; if(l < 1 || r > n || l >= n || r < 1){ cout << "Crossing the line" << endl; } else{ ans = 0; for(int j = 1; a[j] <= r; j++){ if(a[j] >= l){ ans++; } } cout << ans << endl; } } return 0; } ```
by jimmyfj @ 2022-08-19 18:25:01


@[JustinXiaoJunyang](/user/397137) 别没事就求关注, 人家还得给你关注当回报是吧, 求关注这么急的吗
by jimmyfj @ 2022-08-19 18:28:32


直接付个代码上去就能求关注了?又没找到别人问题,你还想让别人copy你的?
by XHY20180718 @ 2022-09-23 23:56:30


|