Codeforces Beta Round #73(Div2)
阅读原文时间:2023年07月09日阅读:2

A - Chord

题意:就是环中有12个字符,给你三个字符,判断他们之间的间隔,如果第一个和第二个间隔是3并且第二个和第三个间隔是4,那么就输出minor,如果第一个和第二个间隔是4并且第二个和第三个间隔是3,那么就输出major,否则输出strange

思路:用一个数组a中相对位置存入1,因为1个循环是12,让你判断的总长度是7,所以不会产生干扰,直接进行a[i]、a[i+3]、a[i+7]判断即可

代码:

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std;
7 int main(){
8 //C, C#, D, D#, E, F, F#, G, G#, A, B,H
9 string s[28]={"0","C","C#","D","D#","E","F","F#","G","G#","A","B","H"};
10 string s1;
11 string s2;
12 string s3;
13 cin>>s1;
14 cin>>s2;
15 cin>>s3;
16 int flag=0;
17 int flag1=0,flag2=0,flag3=0;
18 for(int i=1;i<=12;i++){
19 if(s1==s[i]){
20 flag1=i;
21 }
22 if(s2==s[i]){
23 flag2=i;
24 }
25 if(s3==s[i]){
26 flag3=i;
27 }
28 }
29 int a[50]={0};
30 a[flag1]=1;
31 a[flag2]=1;
32 a[flag3]=1;
33 a[flag1+12]=2;
34 a[flag2+12]=2;
35 a[flag3+12]=2;
36 for(int i=0;i<30;i++){
37 if(a[i]!=0&&a[i+3]!=0&&a[i+7]!=0){
38 flag=1;
39 break;
40 }
41 if(a[i]!=0&&a[i+4]!=0&&a[i+7]!=0){
42 flag=2;
43 break;
44 }
45 }
46 if(flag==1){
47 printf("minor");
48 }else if(flag==2){
49 printf("major");
50 }else{
51 printf("strange");
52 }
53 }

B - Keyboard

题意:题目中给定一种特殊的矩阵键盘,S是可以让小写字母变成大写字母,如果S和给定字母的小写字母在一定范围内,则用一个手输出,否则用两只手输出,问至少多少次用两只手输出

思路:一开始想着就是直接存,然后先找到距离内的字符做好标记,直接看看给定的字符串中有多少个在这个未标记的范围内,结果这样是错的,其实未标记的字母可能也存在于已标记的范围中,所以应该以已标记的为主要对比对象

代码:

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std;
7 int main(){
8 int n,m,x,d;
9 scanf("%d %d %d",&n,&m,&d);
10 char s[60][60];
11 int xx[4000][2];
12 int flag=0;
13 getchar();//存入
14 for(int i=0;i='A'&&tt[i]<='Z'){ 62 ds++; 63 int ff=0,f=0; 64 for(int ii=0;ii0&&p==1)){
104 printf("-1\n");
105 }else{
106 printf("%d\n",sum);
107 }
108
109 }

C - Trains

题意:其实就是问,在两个数的最小公倍数内,谁的商更大一些,但是最小公倍数的最后一次要给除数大的那边,也就是说除数小的那个数的商要减1,然后比较大小分别输出相应的内容

思路:直接找最小公倍数以及商就好了

代码:

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std;
7 long long int cm(long long int a,long long int b){
8 if(a==b){
9 return a;
10 }
11 if(a>b){
12 a-=b;
13 cm(a,b);
14 }else{
15 b-=a;
16 cm(a,b);
17 }
18 }
19 int main(){
20 long long int a,b,c;
21 scanf("%lld %lld",&a,&b);
22 c=(a*b)/(cm(a,b));
23 long long int num1=c/a,num2=c/b;
24 if(a>b){
25 num2-=1;
26 }
27 if(b>a){
28 num1-=1;
29 }
30 if(num1>num2){
31 printf("Dasha");
32 }else if(num1<num2){
33 printf("Masha");
34 }else{
35 printf("Equal");
36 }
37
38 }