#创作计划#ACGO欢乐赛#36 全题解
2025-01-09 19:07:14
发布于:北京
本次竞赛题目较为简单,主要面向基本掌握了语法、接触过算法入门课程的选手。竞赛的考察范围包含顺序结构、分支结构、循环结构、数组、字符串、简单排序,考察选手理解试题的能力与应对常见易错点的能力。竞赛的目的是训练入门选手的代码实现能力、题目理解能力、处理问题能力,并巩固选手的语法知识,对学习过程中的易错点加重强调。
T1 求一个负数的绝对值
题目描述
给你一个负数 n,让你求它的绝对值。
思路分析:
使用abs函数求出n的绝对值。
代码演示:
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;cin>>n;cout<<abs(n);
return 0;
}
T2倍数问题
题目描述
给你一个数 ,请问 n 是否是 4 的倍数,同时也是 6 的倍数。
思路分析:
用n%6和4的最小公倍数,也就是12,然后按题意判断。
代码演示:
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;cin>>n;
if(n%12==0)cout<<"YES";
else cout<<"NO";
return 0;
}
题目描述
给你一个长度为 的数组 ,你需要对该数组的每一个元素都加上其下标(下标从1开始), 最后输出变化后的数组 `.
思路分析:
按题意将数组的每一项增加其下标即可。
代码演示:
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,a[1010];
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]<<' ';
}
return 0;
}
T4交换字符
题目描述
给你两个长度为的字符串,你需要交换和下标为奇数所对应的字符(下标从1开始),请你输出交换后的字符串。
思路分析:
按题意将的奇数项改为的奇数项即可。
代码演示:
#include <bits/stdc++.h>
using namespace std;
string s1,s2;
int main(){
int n;
cin>>n>>s1>>s2;
for(int i=0;i<n;i+=2){
s1[i]=s2[i];
}
for(int i=0;i<n;i++){
cout<<s1[i];
}
return 0;
}
T5二维数组问题
题目描述
给你一个 的二维数组,请你计算出二维数组「边缘元素」的和.
思路分析:
按题意将四条边上的值相加再减去重复计算的部分。
代码演示:
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,a[1010][1010];
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
int sum=0;
for(int i=1;i<=n;i++)sum+=a[1][i];
for(int i=1;i<=n;i++)sum+=a[i][1];
for(int i=1;i<=n;i++)sum+=a[n][i];
for(int i=1;i<=n;i++)sum+=a[i][n];
sum-=a[1][1];
sum-=a[1][n];
sum-=a[n][1];
sum-=a[n][n];
cout<<sum;
return 0;
}
T6最大公约数
题目描述
给你个询问,每次询问给你四个数,请你求出这四个数的最大公约数。
思路分析:
按题意寻找四个数的最大公约数即可。
代码演示:
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int x,y,a,b,mx=1;
cin>>x>>y>>a>>b;
for(int i=1;i<=max(max(x,y),max(a,b));i++){
if(x%i==0&&y%i==0&&a%i==0&&b%i==0&&i>mx){
mx=i;
}
}
cout<<mx<<endl;
}
return 0;
}
给个周边吧
全部评论 5
第一题不会用abs的看过来
#include <bits/stdc++.h> using namespace std; int main(){ int n; char m; cin>>m>>n; cout<<n; return 0; }
6天前 来自 上海
0我觉得你第5题可以简洁一点:
#include <iostream> using namespace std; int n; int a[1100][1100]; int main() { cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; } } int sum = 0; for (int j = 0; j < n; j++) { sum += a[0][j]; sum += a[n - 1][j]; } for (int i = 1; i < n - 1; i++) { sum += a[i][0]; sum += a[i][n - 1]; } cout << sum; return 0; }
2024-12-27 来自 天津
0再简捷
#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; }
1周前 来自 江苏
1@桌子乱的反义词 thanks a lot
1周前 来自 江苏
0Wow
1周前 来自 天津
0
顶
2024-12-24 来自 天津
0顶
2024-12-24 来自 北京
0顶
2024-12-23 来自 北京
0去看看我的,对比一下
2024-12-24 来自 江苏
1感觉你写的很格式化
2024-12-24 来自 江苏
1
有帮助,赞一个