A - Middle Letter
题意:总是输出中间的字符,字符数量为奇数
思路:计算出来字符串的长度,因为是长度为奇数的字符串,输出下标为( len + 1 ) / 2 的字符即可(这里字符串下标从1开始)
AC代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
typedef long long LL;
const int N = 200010;
int n;
int a[N];
map<int,int>mp;
string s;
int main()
{
cin >> s;
n = s.size() / 2;
cout << s[n];
return 0;
}
B - Modulo Number
题意:给你一个数N,N - x是998244353的倍数,x在0到998244352。
思路:n>=0的话,直接取模就好,n<0的话,取模就是负数,加上998244353就好,但要注意还要去一次模,不然可能n本身就是998244353的倍数,x就是998244353了。
AC代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
#define mod 998244353
typedef long long LL;
const int N = 200010;
LL n;
int a[N];
map<int,int>mp;
string s;
int main()
{
cin >> n;
if(n >= 0) cout << n % mod;
else cout << (mod + (n % mod)) % mod;
return 0;
}
C - Convex Quadrilateral
题意:给你平面上四个点的坐标,求这个四边形内部是否出现了大于等于180°的角
思路:其实也就是判断一个四边形是不是凸四边形,只需要围绕四边形做一圈, 每一次取相邻的两条边做叉乘, 如果小于等于0, 那么说明不是凸的(来自某位大佬的想法,可以用右手螺旋法则模拟一下)
AC代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
#define mod 998244353
typedef long long LL;
const int N = 200010;
LL n;
int a[N];
map<int,int>mp;
string s;
int main()
{
array<int, 8> x, y;
for (int i = 0; i < 4; i ++)
{
cin >> x[i] >> y[i];
x[i + 4] = x[i];
y[i + 4] = y[i];
}
for (int i = 0; i < 4; i ++)
{
int o = (x[i + 1] - x[i]) * (y[i + 2] - y[i + 1]) - (x[i + 2] - x[i + 1]) * (y[i + 1] - y[i]);
if (o <= 0)
{
cout << "No\n";
return 0;
}
}
cout << "Yes\n";
return 0;
}