A - Chord
题解:
三个琴键同时按下组成和弦
如果三个键从左到右分别相差4、3个音阶的话算作major
相差4、3个则为minor
剩下的就是strange
给三个琴键问是哪种和弦
用枚举就可以解题了
#include<bits/stdc++.h>
#define ll long long
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const long long MAXN = 1e5 + 7;
int main()
{
int x[3];
string num[3];
for(int i=0;i<3;i++)
{
cin>>num[i];
}
for(int i=0;i<3;i++)
{
if(num[i]=="C")
{
x[i]=1;
}
if(num[i]=="C#")
{
x[i]=2;
}
if(num[i]=="D")
{
x[i]=3;
}
if(num[i]=="D#")
{
x[i]=4;
}
if(num[i]=="E")
{
x[i]=5;
}
if(num[i]=="F")
{
x[i]=6;
}
if(num[i]=="F#")
{
x[i]=7;
}
if(num[i]=="G")
{
x[i]=8;
}
if(num[i]=="G#")
{
x[i]=9;
}
if(num[i]=="A")
{
x[i]=10;
}
if(num[i]=="B")
{
x[i]=11;
}
if(num[i]=="H")
{
x[i]=12;
}
}
sort(x,x+3);
if((x[2]-x[1]==4&&x[0]+12-x[2]==3)||(x[0]+12-x[2]==4&&x[1]-x[0]==3)||(x[1]-x[0]==4&&x[2]-x[1]==3))
{
cout<<"major"<<endl;
}
else if((x[2]-x[1]==3&&x[0]+12-x[2]==4)||(x[0]+12-x[2]==3&&x[1]-x[0]==4)||(x[1]-x[0]==3&&x[2]-x[1]==4))
{
cout<<"minor"<<endl;
}
else cout<<"strange"<<endl;
}
C - Trains
(这个题从网上借鉴的大佬的代码)
题解:
当t%a=0时,Vasya去见Dasha
当t%b=0时,Vasya去见Masha
当t%a=0&&t%b=0时,Vasya去见见面次数比较少的女朋友
输出见面次数较多的女朋友的名字
通过求最大公约数后加个1是来判断频率低的方向,注意用long long
#include<bits/stdc++.h>
#define ll long long
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const long long MAXN = 1e5 + 7;
//求最大公约数的函数
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
int a,b;
while(cin>>a>>b)
{
long long c=1ll*a/gcd(a,b)*b;
int c1=c/a-1;
int c2=c/b-1;
if(c1<c2) c1++;
else if(c1>c2) c2++;
if(c1>c2)
{
cout<<"Dasha";
}
else if(c1<c2)
{
cout<<"Masha";
}
else
{
cout<<"Equal";
}
}
}
B - Keyboard
(之前自己的方法一直不太对,后来看的网上大佬的思路,又自己打了一遍)
题解:
注意判断字符是否在键盘按键上出现过
找到特殊键后以特殊键为中心
向外扫一圈,判断在不在按键范围内
#include<bits/stdc++.h>
#define ll long long
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const long long MAXN = 1e5 + 7;
map<int,int> m1,m2;
char ma[50][50];
char mb[500002];
int main()
{
int n,m,x,y;
cin>>n>>m>>x;
for(int i=0; i<n; i++)
{
cin>>ma[i];
}
bool flag=false,flag2=false;
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
if(ma[i][j]=='S')
{
flag=true;
for(int k=0; k<n; k++)
{
for(int l=0; l<m; l++)
{
if((k-i)*(k-i)+(l-j)*(l-j)<=x*x&&ma[k][l]!='S')
{
m1[ma[k][l]-'a']=1;
}
}
}
}
else m2[ma[i][j]-'a']=1;
}
}
int cou=0;
cin>>y>>mb;
for(int i=0; i<y; i++)
{
if(mb[i]>='A'&&mb[i]<='Z')
{
if(!flag)
{
flag2=true;
break;
}
if(m1[mb[i]-'A']){}
else if(m2[mb[i]-'A']) cou++;
else
{
flag2=true;
break;
}
}
else if(m2[mb[i]-'a']){}
else
{
flag2=true;
break;
}
}
if(flag2)
{
cout<<"-1";
}
else
{
cout<<cou<<endl;
}
return 0;
}