#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=205;
int c[N];
void solve()
{
int n,a,b;
cin>>n>>a>>b;
for (int i=1;i<=n;i++) cin>>c[i];
for (int i=1;i<=n;i++){
if (c[i]==a+b){
cout<<i<<' ';
return;
}
}
return;
}
int main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int T=1;
while (T--) solve();
return 0;
}
- B题 传送门 √
题目难度:红
知识点:略
Code:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=205;
char a[N][N],b[N][N];
int H,W;
bool check(int x,int y)
{
for (int i=1;i<=H;i++){
for (int j=1;j<=W;j++){
if (b[i][j]!=a[x+i][y+j]) return false;
}
}
return true;
}
void solve()
{
cin>>H>>W;
for (int i=1;i<=H;i++){
for (int j=1;j<=W;j++){
cin>>a[i][j]; a[H+i][j]=a[i][W+j]=a[H+i][W+j]=a[i][j];
}
}
for (int i=1;i<=H;i++){
for (int j=1;j<=W;j++){
cin>>b[i][j];
}
}
for (int i=0;i<=H;i++){
for (int j=0;j<=W;j++){
if (check(i,j)){
cout<<"Yes"<<'\n';
return;
}
}
}
cout<<"No"<<'\n';
return;
}
int main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int T=1;
while (T--) solve();
return 0;
}
- C题 传送门 √
题目难度:红
知识点:dfs
Code:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=205;
char a[N][N],b[N][N];
int ans[N];
void solve()
{
int H,W,zsx,zsy,ysx,ysy,zxx,zxy,yxx,yxy,cnt;
cin>>H>>W;
for (int i=1;i<=H;i++){
for (int j=1;j<=W;j++){
cin>>a[i][j];
}
}
for (int i=1;i<=H;i++){
for (int j=1;j<=W;j++){
zsx=i-1; zsy=j-1;
ysx=i-1; ysy=j+1;
zxx=i+1; zxy=j-1;
yxx=i+1; yxy=j+1;
if (a[i][j]=='#'){
cnt=0;
while (a[zsx][zsy]=='#' && a[ysx][ysy]=='#' && a[zxx][zxy]=='#' && a[yxx][yxy]=='#'){
cnt++;
zsx--; zsy--;
ysx--; ysy++;
zxx++; zxy--;
yxx++; yxy++;
}
ans[cnt]++;
}
}
}
for (int i=1;i<=min(H,W);i++) cout<<ans[i]<<' ';
return;
}
int main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int T=1;
while (T--) solve();
return 0;
}
- D题 传送门 √
题目难度:黄
知识点:欧拉筛
Code:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e6+5,INF=1e18;
ll Prime[N],cnt,fi[N],miu[N];
bool isPrime[N];
void OLS(ll n)
{
memset(isPrime,1,sizeof(isPrime));
isPrime[0]=isPrime[1]=0; miu[1]=1;
for (int i=2;i<=n;i++){
if (isPrime[i]) Prime[++cnt]=i,fi[i]=i-1,miu[i]=-1;
for (int j=1;j<=cnt && Prime[j]<=n/i;j++){
isPrime[i*Prime[j]]=0;
fi[i*Prime[j]]=fi[i]*fi[Prime[j]];
miu[i*Prime[j]]=miu[i]*miu[Prime[j]];
if (i%Prime[j]==0){
fi[i*Prime[j]]=fi[i]*Prime[j];
miu[i*Prime[j]]=0;
break;
}
}
}
return;
}
int main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
OLS(1000000);
ll n,ans=0;
cin>>n;
for (int i=3;i<=cnt;i++){
if (Prime[i]*Prime[i]>n) break;
for (int j=1;j<=i-2;j++){
if (Prime[j]*Prime[j]*Prime[i]*Prime[i]>n) break;
for (int k=j+1;k<=i-1;k++){
if (Prime[j]*Prime[j]*Prime[k]*Prime[i]*Prime[i]>n) break;
ans++;
}
}
}
cout<<ans<<'\n';
return 0;
}
- E题 传送门 √
题目难度:绿
知识点:记忆化搜索
Code:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e6+5,MOD=998244353;
ll Pow(ll a,ll b,ll p)
{
ll ans=1%p,t=a%p;
while (b){
if (b&1) ans=ans*t%p;
t=t*t%p; b>>=1;
}
return ans%p;
}
ll inv5;
map <ll,ll> mp;
ll dfs(ll n)
{
ll ans=0;
if (n==1) return 1ll;
if (n%2==0){
if (mp[n/2]==0) mp[n/2]=dfs(n/2);
ans=(ans+mp[n/2])%MOD;
}
if (n%3==0){
if (mp[n/3]==0) mp[n/3]=dfs(n/3);
ans=(ans+mp[n/3])%MOD;
}
if (n%4==0){
if (mp[n/4]==0) mp[n/4]=dfs(n/4);
ans=(ans+mp[n/4])%MOD;
}
if (n%5==0){
if (mp[n/5]==0) mp[n/5]=dfs(n/5);
ans=(ans+mp[n/5])%MOD;
}
if (n%6==0){
if (mp[n/6]==0) mp[n/6]=dfs(n/6);
ans=(ans+mp[n/6])%MOD;
}
return ans*inv5%MOD;
}
int main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
inv5=Pow(5,MOD-2,MOD)%MOD;
ll n;
cin>>n;
cout<<dfs(n)<<'\n';
return 0;
}