官方题解|欢乐赛#36
2024-12-25 15:03:21
发布于:浙江
欢乐赛36 官方题解
T1
本题题目中说明了,给你的是一个负数 ,所以你只需要输出 就好了。
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
cout << -1 * n;
return 0;
}
T2
本题只需要通过取模运算看这个数是不是 和 的倍数即可。
#include <iostream>
using namespace std;
int main(){
int x;
cin >> x;
if(x % 4 == 0 && x % 6 == 0) cout << "YES\n";
else cout << "NO\n";
return 0;
}
T3
本题只需要把对应的数组元素加上其下标即可。
#include <iostream>
using namespace std;
int n, a[1010];
int main(){
cin >> n;
for(int i = 1; i <= n; i ++ ){
cin >> a[i];
a[i] += i;
}
for(int i = 1; i <= n; i ++ ){
cout << a[i] << " ";
}
cout << endl;
return 0;
}
T4
本题只需要把下标为奇数的字符,交换一下即可,你可以下标从0开始读入字符串,这样就交换下标为0的字符。
#include <iostream>
using namespace std;
string s1, s2;
int n;
int main(){
cin >> n;
cin >> s1 >> s2;
for(int i = 0; i < n; i ++ )
if(i % 2 == 0)
swap(s1[i], s2[i]);
cout << s1;
return 0;
}
T5
本题的思路可以很清晰,题目里都有提示,在遍历二维数组的时候,只要满足 ,就加上对应的元素的值,不需要进行容斥。
#include <iostream>
using namespace std;
const int N = 1010;
int a[N][N], sum, n;
int main(){
cin >> n;
for(int i = 1; i <= n; i ++ ) for(int j = 1; j <= n; j ++ ){
cin >> a[i][j];
if(i == 1 || j == 1 || i == n || j == n)
sum += a[i][j];
}
cout << sum;
return 0;
}
T6
求最大公约数,是个很经典的问题,由于是欢乐赛,所以让你们暴力写也能对哈,只需要从大到小枚举所有的数 ,如果同时满足这四个数都是 的倍数,那么 就是这四个数的 ,在枚举的时候不用对于上限进行去最大值和取最小值,从四个数里面随便选一个数当作上限即可哈。
#include <iostream>
using namespace std;
int main(){
int t; cin >> t;
while(t -- ){
int a, b, c, d;
cin >> a >> b >> c >> d;
for(int i = a; i >= 1; i --){
if(a % i == 0 && b % i == 0 && c % i == 0 && d % i == 0){
cout << i << endl;
break;
}
}
}
return 0;
}
这里空空如也
有帮助,赞一个