ACGO欢乐赛#36 题解
2024-12-30 11:25:31
发布于:江苏
前言:
现在欢乐赛真的太水了。。。本人萌新都已经AK两次了
第一次写题解哈,如有不足请指出!
实在不会搞链接,不好意思不能让大家立刻看到题目
T1:求一个负数的绝对值
简单到爆炸,注意求绝对值的函数为abs()
C++代码如下:
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
cout<<abs(n);
return 0;
}
T2:倍数问题
正常题,求一个数是否是4和6的倍数,用取余符号(%)即可,同时提供另外一种解题思路,4和6的最小公倍数为12,也可以用n%12==0来解。
C++代码如下:
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
if(n%4==0&&n%6==0)
{
cout<<"YES";
}
else
{
cout<<"NO";
}
return 0;
}
T3:数组元素和下标的和
这题算比较抽象的题反正我是不知道我怎么写对的,注意下标从1开始,输入和循环判断时都要把i的初始值定义成1,用a[i]加上i的值再依次输出即可,要加空格
C++代码如下:
#include<iostream>
using namespace std;
int main()
{
int a[1005];
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
a[i]+=i;
cout<<a[i]<<" ";
}
return 0;
}
T4:交换字符
有一点难度,是奇数下标,解题思路就是输入两个字符串,遍历一下,i的值每次要加2,再用swap()函数进行交换即可不得不说这swap就是好用啊
C++代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
string s1,s2;
cin>>s1;
cin>>s2;
for(int i=1;i<=n;i+=2)
{
swap(s1[i-1],s2[i-1]);
}
cout<<s1<<endl;
return 0;
}
T5:二维数组问题
这题是真的良心啊,都把条件给我们了,不用多说了吧,记得定义一个sum变量存放边缘数组的和哈~
C++代码如下:(不知道为啥代码颜色成这样了@Macw07帮忙康康可以咩)
#include<iostream>
using namespace std;
int main()
{
int a[1005][1005];
int n;
cin>>n;
int sum=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==1||j==1||i==n||j==n)
{
sum+=a[i][j];
}
}
}
cout<<sum;
return 0;
}
T6:最大公约数
压台题也不过那样吧。。。需要运用辗转相除法,可以定义一个函数哈,最后先两两比较出两个最大公因数,最后用这两个数再辗转相除就可以了
C++代码如下:
#include<bits/stdc++.h>
using namespace std;
int g(int a,int b)
{
if(b==0)
{
return a;
}
return g(b,a%b);
}
int main()
{
int n;
cin>>n;
while(n--)
{
int x,y,a,b;
cin>>x>>y>>a>>b;
int a1=g(x,y);
int a2=g(a,b);
int af=g(a1,a2);
cout<<af<<endl;
}
return 0;
}
我因为熬夜写题解已经被麻麻骂了,给个周边吧AC君大佬!!!
全部评论 13
家人们,应AC君要求,每题都在题目里发了题解哈
T1:求一个负数的绝对值
T2:倍数问题
T3:数组元素和下标的和
T4:交换字符
T5:二维数组问题
T6:最大公约数2024-12-24 来自 江苏
1太简单啦
2024-12-25 来自 浙江
0最后一题可以这样(不过差不多):
#include<bits/stdc++.h> using namespace std; int t; int a,b,c,d; int main() { cin>>t; while(t--){ cin>>a>>b>>c>>d; cout<<__gcd(a,__gcd(b,__gcd(c,d)))<<endl;; } return 0; }
2024-12-25 来自 浙江
0这样写
```cpp
#include<iostream>
using namespace std;
int main()
{
int a[1005][1005];
int n;
cin>>n;
int sum=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==1||j==1||i==n||j==n)
{
sum+=a[i][j];
}
}
}
cout<<sum;
return 0;
}
```2024-12-25 来自 北京
0T5
2024-12-25 来自 北京
0你不是Python选手咩?
2024-12-26 来自 江苏
0C++也懂
1周前 来自 北京
0
hello,第一题T1也可以用fabs()哟
2024-12-25 来自 江苏
0感谢同学!
2024-12-25 来自 江苏
0
欢乐赛都是语法题,AK很正常呀,欢乐赛难度系数分<=600分哦。
2024-12-25 来自 浙江
0之前我想AK就是做梦
2024-12-25 来自 江苏
0嗯嗯,欢乐赛是面向语法选手的,如果想磨练算法可以去看下巅峰赛
2024-12-25 来自 浙江
0+1
2024-12-25 来自 浙江
0
顶
2024-12-24 来自 四川
0感谢榜一的点赞
2024-12-24 来自 江苏
0我被置顶了哈哈哈!
2024-12-23 来自 江苏
0点点赞
2024-12-23 来自 广东
0感谢大佬!
2024-12-23 来自 江苏
1榜五给我点赞了!!!
2024-12-23 来自 江苏
12024-12-23 来自 广东
0
2024-12-23 来自 北京
0AC君已经点赞了,大家还不速看!感谢AC君!
2024-12-23 来自 江苏
0发起讨论的第五个功能按钮是链接描述,可以插入题目的链接。链接描述
2024-12-23 来自 北京
0哦
2024-12-23 来自 江苏
0
有帮助,赞一个