ACGO欢乐赛#36题解
2024-12-24 17:47:11
发布于:北京
欢乐赛有亿点水,简直是有手就行
先来看第一题
求一个负数的绝对值
这道题没什么可说的,一个函数就行了。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a;
cin >> a;
cout << abs(a);
return 0;
}
第二题
倍数问题
这道题用一个if语句就行了。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a;
cin >> a;
if(a%12 == 0) cout << "YES"; // 4和6的最小公倍数
else cout << "NO";
return 0;
}
第三题
数组元素和下标的和
这道题用一个循环把它的下标相加,再输出。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,i = 1;
cin >> n;
while(n--){
int x;
cin >> x;
cout << x+i;
i++;
cout << " ";
}
return 0;
}
第四题
交换字符
这道题让我们交换奇数下标的值,其实直接输出就可以了。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
string a,b;
cin >> a >> b;
for(int i = 0;i < n;i++){
if(i%2) cout << a[i];
else cout << b[i];
}
return 0;
}
第五题
二维数组问题
直接统计二维数组的边界
注意从0或1开始要搞清楚
#include <bits/stdc++.h>
using namespace std;
int a[1005][1005];
int main()
{
long long n,ans = 0;
cin >> n;
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++){
int x;
cin >> x;
if(i == 1 || i == n || j == 1 || j == n) ans += x;
}
}
cout << ans;
return 0;
}
压轴第六题
最大公约数
这道题让我们求四个数的最大公约数。
可以先求出两个数的,在求出两个数的公约数的公约数。
在此分享一个函数:
__gcd(a,b) // 作用:通过辗转相除法求出两个数的最大公约数
最终代码
#include <bits/stdc++.h>
using namespace std;
void f(){
int a,b,c,d;
cin >> a >> b >> c >> d;
cout << __gcd(__gcd(a,b),__gcd(c,d)) << endl;
}
int main()
{
int n;
cin >> n;
while(n--)f();
return 0;
}
这里空空如也
有帮助,赞一个