一假期精力在别处,没有来看看代码。
让原本就菜的我菜上夹菜。
开学了,快要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;elsecout << (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";elsecout << "No\n";return 0;
}