T1:字符串加密
本题难度简单,根据题目描述模拟即可。
代码实现
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
for (char& c : s) {
if (islower(c)) c -= 32;
else c += 32;
}
reverse(s.begin(), s.end());
cout << s << '\n';
return 0;
}
T2:美丽的数
本题难度简单,只有完全平方数才可能满足只有 \(3\) 个约数,再满足算术平方根是质数时,就一定只有 \(3\) 个约数,那么可以先筛出所有质数,然后每次判断给定的数是否为完全平方数且算术平方根是质数。
代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
using namespace std;
using ll = long long;
// linear sieve
vector<int> ps, pf;
void sieve(int mx) {
pf.resize(mx + 1);
rep(i, mx + 1) pf[i] = i;
for (int i = 2; i <= mx; ++i) {
if (pf[i] == i) ps.push_back(i);
rep(j, ps.size()) {
int x = ps[j] * i;
if (x > mx) break;
pf[x] = ps[j];
}
}
}
int main() {
sieve(1e6);
int q;
cin >> q;
while (q--) {
ll x;
cin >> x;
ll y = sqrtl(x);
if (y > 1 and y*y == x and pf[y] == y) puts("Yes");
else puts("No");
}
return 0;
}