AtCoder Beginner Contest 096 C 模拟。 123456789101112131415161718192021222324252627// LUOGU_RID: 174625886#include <bits/stdc++.h>using namespace std;int n, m;bool flag;char a[550][550];int main(){ scanf("%d%d", &n, &m); for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j) scanf(" %c", &a[i][j]); for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { if (a[i][j] == '#') if (a[i][j - 1] != '#' && a[i][j + 1] != '#' && a[i - 1][j] != '#' && a[i + 1][j] != '#') // 判断该点是否被孤立 { printf("No\n"); return 0; } } } printf("Yes\n"); return 0;} D 尾数是1 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include <bits/stdc++.h>using namespace std;using ll = long long;const int N = 1e6 + 100;bool vis[N];int prime[N];// 欧拉筛函数void Euler_sieve(int n){ int i, j, k; k = 0; // 保存素数的个数 memset(vis, 0, sizeof vis); // 初始化数组 for (i = 2; i <= n; i++) { if (vis[i] == 0) // i是素数,则存起来 prime[k++] = i; for (j = 0; j < k; j++) // 进行倍增,用i去乘以i之前(包括i)的素数 { if (i * prime[j] > n) // 倍增结果超出范围,退出 break; vis[i * prime[j]] = 1; // 将倍增结果进行标记 if (i % prime[j] == 0) // i是前面某个素数的倍数时,也需要退出 break; } }}int main(){ Euler_sieve(N); int n; cin >> n; for (int i = 1; i <= N; i++) { if (!n) { return 0; } if (prime[i] % 10 == 1) { cout << prime[i] << ' '; n--; } } return 0;}