~~~新鲜出炉~~~
上一篇:ABC248 下一篇:ABC251
统一链接:https://atcoder.jp/contests/abc250/tasks
这次比较水啊(特别是C),但是说D题的数学题不那么简单(但看了这个题确实不难)
下面开始题解:
A题:
题意:给定格子长宽和一个格子的行列,求那个格子的相邻格子的数量。
这个题还是比较友好的,把所有情况都告诉你了,除了只有1行或者只有1列的情况比较难想到,下面代码:
//AT250A 22-05-08
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int h,w,r,c,s=4;
cin>>h>>w>>r>>c;
if (r==1 || r==h) s--;
if (c==1 || c==w) s--;
if (h==1 || w==1) s--;
if (h==1 && r==1 && c==1 && w==1) s=0;
cout<<s<<endl;
return 0;
}
B题:
题意:按要求输出:给定区块长宽,间隔输出 # 和 . 。
#的情况就是长和宽的绝对值差为奇数,.就是差为偶数,看代码:
//AT250B 22-05-08
#include <bits/stdc++.h>
using namespace std;
char c[105][105];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n,a,b;
cin>>n>>a>>b;
for (int p=1;p<=n;p++)
{
for (int q=1;q<=n;q++)
if (abs(q-p)%2==0)
{
for (int i=1;i<=a;i++)
for (int j=1;j<=b;j++)
c[p*a-a+i][q*b-b+j]='.';
}
else
{
for (int i=1;i<=a;i++)
for (int j=1;j<=b;j++)
c[p*a-a+i][q*b-b+j]='#';
}
}
for (int i=1;i<=a*n;i++)
{
for (int j=1;j<=b*n;j++)
cout<<c[i][j];
cout<<endl;
}
return 0;
}
C题
题意:给定长度为 N 的数组,进行操作:
共有 Q 个询问:
给定一个数,查找这个数,然后交换它与右边的元素