AtCoder Beginner Contest 266 ABC题解

一假期精力在别处,没有来看看代码。

让原本就菜的我菜上夹菜。

开学了,快要ICPC区域赛了,就加把劲练题。

(关于一假期CSDN的粉涨到了600+是让我意外的,加把劲涨更多粉丝儿)

A - Middle Letter

第一题还是没有太大难度,给你一个小于100的奇数长度的字符串,输出中间的字符。

直接输出下标是(length - 1) / 2的字符即可。

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string s;
	cin >> s;
	int l = s.length();
	cout << s[(l-1)/2];
	return 0;
}

B - Modulo Number

第二题有小坑了,但细心一点就可以过。

给你一个数N,N - x是998244353的倍数,x在0到998244352。

浅找一下规律,n>=0的话,直接取模就好,n<0的话,取模就是负数,加上998244353就好,但要注意还要去一次模,不然可能n本身就是998244353的倍数,x就是998244353了。

代码:

#include<bits/stdc++.h>
using namespace std;
#define mod 998244353
int main()
{
	long long n;
	cin >> n;
	if(n>=0)
	cout << n % mod;
	else
	cout << (mod + (n % mod)) % mod;
	return 0; 
}

逆水行舟,奈何第三题想不到高效的代码。

C - Convex Quadrilateral

给你平面上四个点的坐标,求这个四边形内部是否出现了大于等于180°的角。

我天,这怎么写。

话说,有没有一种可能有一种数学方法叫做向量。哦哦太熟悉了,可能什么地方见过这个概念。(┭┮﹏┭┮)

求出每两个边的向量,夹角就可以通过向量之积求出来,即AXBY - BXBY > 0说明夹角小于180°,高中数学知识,┭┮﹏┭┮。

代码:

#include<bits/stdc++.h>
using namespace std;
bool fun(int nx,int ny,int mx,int my)
{
	if(nx*my - mx*ny > 0)
	return true;
	return false;
}
int main()
{
	int ax,ay,bx,by,cx,cy,dx,dy;
	cin >>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy;
	if(fun(bx-ax,by-ay,dx-ax,dy-ay)
	 &&fun(ax-dx,ay-dy,cx-dx,cy-dy)
	 &&fun(dx-cx,dy-cy,bx-cx,by-cy)
 	 &&fun(cx-bx,cy-by,ax-bx,ay-by))
	cout << "Yes\n";
	else
	cout << "No\n";
	return 0; 
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三元湖有大锦鲤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值