CSP考了依托答辩,准备复习一下。
ACwing题目还有做题为主要内容。
3.22
快排
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
inline int read() {
char c = getchar();
int x = 0, f = 1;
for ( ; !isdigit(c); c = getchar()) if (c == '-') f = -1;
for ( ; isdigit(c); c = getchar()) x = x * 10 + (c ^ 48);
return x * f;
}
int a[1000011];
void qsort(int l, int r) {
if (l >= r) return;
int x = a[l + r >> 1];
int i = l - 1, j = r + 1;
while (i < j) {
while (a[++i] < x);
while (a[--j] > x);
if (i < j) swap(a[i], a[j]);
}
qsort(l, j);
qsort(j + 1, r);
}
int main() {
int n = read();
for (int i = 1; i <= n; i++) a[i] = read();
qsort(1, n);
for (int i = 1; i <= n; i++) cout << a[i] << " ";
puts("");
return 0;
}
3.23
线性筛素数
#include <stdio.h>
const int A = 1e6 + 11;
const int B = 5e5 + 11;
int vis[A];
int n, q, pri[B], cnt;
int main() {
scanf("%d", &n);
vis[0] = 1, vis[1] = 1;
for (int i = 2; i <= n; i++) {
if (!vis[i]) pri[++cnt] = i;
for (int j = 1; j <= cnt && i * pri[j] <= n; j++) {
vis[i * pri[j]] = 1;
if (i % pri[j] == 0) break;
}
}
for (int i = 1; i < cnt; i++) {
if (pri[i + 1] - pri[i] == 2) printf("(%d,%d) ", pri[i], pri[i + 1]);
}
return 0;
}
转载不必联系作者,但请声明出处