A
找出非平方数
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<set>
#include<map>
#include<iterator>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int n, num, flag = 0;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> num;
if (sqrt(num)!=(int)(sqrt(num))) {
flag = 1;
}
}
if (flag) {
cout << "YES" << endl;
}
else {
cout << "NO" << endl;
}
}
return 0;
}
B
位运算 排列组合
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<set>
#include<map>
#include<iterator>
using namespace std;
int mod = 1e9 + 7;
int main() {
int t;
cin >> t;
while (t--) {
long long ans = 1;
int n, k;
cin >> n >> k;
while (k--) {
ans = ans * n % mod;
}
cout << ans << endl;
}
return 0;
}
C
输出数组中的每个数与n的最大公约数必须为1,遍历过程中判断乘积与n的最大公约数是否为1.
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
#include<vector>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<iterator>
using namespace std;
typedef long long ll;
template<class T>T gcd(T a, T b) { return b == 0 ? a : gcd(b, a % b); }
void solve() {
ll n, g = 1, len, pl = 0;
vector<int> a;
cin >> n;
for (int i = 1; i < n; ++i) {
if (gcd<ll>(n, i) == 1) {
++pl;
a.push_back(i);
g *= i;
if (g % n == 1) {
len = pl;
}
g %= n;
}
}
cout << len << endl;
for (int i = 0; i < len; ++i) {
cout << a[i] << " ";
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int T = 1;
//cin >> T;
while (T--) {
solve();
}
return 0;
}