比赛详情

题目解答

A : [CSP-J2020] 优秀的拆分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
#define ll long long
using namespace std;
int n;
ll a[30];
int main(){
scanf("%d", &n);
if(n % 2 == 1){
printf("-1");
return 0;
}
a[1] = 1;
for(int i = 2; i < 30; i++){
a[i] = a[i - 1] * 2;
}
for(int i = 29; i >= 1; i--){
if(n >= a[i]){
n -= a[i];
printf("%lld ", a[i]);
}
if(n == 0) break;
}
return 0;
}

B : [CSP-J 2022] 乘方

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<cmath>
#define ll long long
using namespace std;
int a, b;
int main(){
scanf("%d%d", &a, &b);
ll ans = pow(a,b);
if(ans > 1e9 || ans < 0){
printf("-1");
return 0;
}
printf("%lld", ans);
return 0;
}

C : [NOI Online 2022 入门组] 王国比赛

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
using namespace std;
const int maxn = 1009;
int n, m, t, ans[maxn], cnt = 0;
int main(){
scanf("%d%d", &n, &m);
for(int i = 1; i <= m; i++){
for(int j = 1; j <= n; j++){
scanf("%d", &t);
ans[j] += t;
}
}
for(int i = 1; i <= n; i++){
scanf("%d", &t);
ans[i] *= 2;
// printf("%d ", ans[i]);
if((t && (ans[i] > m)) || (!t && (ans[i] < m))){
cnt++;
}
}
printf("%d", cnt);
return 0;
}