A A+B=B

  • 知识点:映射、模运算

  • 思路:题目将大写字母ABCDEFGHIJ映射为0123456789,于是我们将两个字符转换成对应的数字相加求和(也就是减去’A‘字母即可),和除10得到和的十位数,和模10得到和的个位数,若十位数等于0,就映射为字符串(字符串为ABCDEFGHIJ)对应的个位的位置,否则映射字符串对应的十位和个位数字。

    #include<bits/stdc++.h>
    using namespace std;
    string s="ABCDEFGHIJ";
    char a,b;
    int main(){
      cin>>a>>b;
      int sum=a-'A'+b-'A';
      int ge=sum%10,shi=sum/10;
      if(shi==0){
          cout<<s[ge];
      }else{
          cout<<s[shi]<<s[ge];
      }
      return 0;
    }
    

B 联合豆包

  • 知识点:循环、max()函数、累加器

  • 思路:对于每次的输入,求得最大值然后进行累加,最后进行输出。

    #include<bits/stdc++.h>
    using namespace std;
    long long n,x,y,s;
    int main(){
      cin>>n;
      for(int i=1;i<=n;i++){
          cin>>x>>y;
          s+=max(x,y);
      }cout<<s;
      return 0;
    }
    

C 环状字符串

  • 知识点:字符串、字符串的追加

  • 思路:即然是到尾了就返回到头,那就直接点,将字符串在本身的基础上连续追加m(m为最终需要的长度)次,最后再从n-1(n为从第几个位置开始)的位置输出到n+m-2的位置即可。

    方法1:

    #include<bits/stdc++.h>
    using namespace std;
    string s,t;
      int n,m;//从n个开始,按环上顺序的m个字符 
      int main(){
      cin>>s>>n>>m;
      t=s;
      for(int i=1;i<=m;i++)s+=t; 
      for(int i=n-1;i<n+m-1;i++){
          cout<<s[i];
    } 
    return 0;
    }
    

    方法 2

    #include <bits/stdc++.h>
    using namespace std; 
    int main(){
      string s,s1;
      int n,m;
      cin>>s>>n>>m;
      for(int i=n-1;i<=n+m-2;i++){
          s1+=s[i%s.size()];
      }
      cout<<s1;
      return 0;
    }
    

D 三子棋

  • 知识点:二维数组、坐标轴
  • 思路:对于每个位置进行判断,若该位置未落棋子并且该位置的上下左右,左上右下,左下右上的位置均在棋盘内,那么看看与之相邻的两个位置是否已经有棋子了,类型分为两种,其一是该棋子作为三个棋子的中间位置;其二是该棋子作为三个棋子的一个边缘位置;两者满足其一,给累加器增加一个即可。

    #include <bits/stdc++.h>
    using namespace std; 
    char a[55][55];
    int n,m,cnt;
    int main(){
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                cin>>a[i][j];
            }
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                //横的,分为左方和右方两个  左方和右方分别一个 
                if(a[i][j]=='.'&& a[i][j-1]=='#'&&a[i][j-2]=='#'){
                    cnt++;
                }else if(a[i][j]=='.'&& a[i][j+1]=='#'&&a[i][j+2]=='#'){
                    cnt++;
                }else if(a[i][j]=='.'&& a[i][j-1]=='#'&&a[i][j+1]=='#'){
                    cnt++; 
                } 
                //竖的,分为上边和下边两个、上边和下边分别一个 
                else if(a[i][j]=='.'&& a[i-1][j]=='#'&&a[i-2][j]=='#'){
                    cnt++;
                }else if(a[i][j]=='.'&& a[i+1][j]=='#'&&a[i+2][j]=='#'){
                    cnt++;
                }else if(a[i][j]=='.'&& a[i-1][j]=='#'&&a[i+1][j]=='#'){
                    cnt++;
                }
                //左对角线,分为左上方两个格、左上一个、右下一个、右下两个格 
                else if(a[i][j]=='.'&&a[i-1][j-1]=='#'&&a[i-2][j-2]=='#'){
                    cnt++;
                } else if(a[i][j]=='.'&&a[i-1][j-1]=='#'&&a[i+1][j+1]=='#'){
                    cnt++;
                } else if(a[i][j]=='.'&&a[i+1][j+1]=='#'&&a[i+2][j+2]=='#'){
                    cnt++;
                } 
                //右对角线,分为右上方两个格、右上左下分别一个、左下方两个格
                else if(a[i][j]=='.'&&a[i-1][j+1]=='#'&&a[i-2][j+2]=='#'){
                    cnt++;
                } else if(a[i][j]=='.'&&a[i-1][j+1]=='#'&&a[i+1][j-1]=='#'){
                    cnt++;
                } else if(a[i][j]=='.'&&a[i+1][j-1]=='#'&&a[i+2][j-2]=='#'){
                    cnt++;
                } 
            }
        }
        cout<<cnt;
        return 0;
    }
    
Copyright ©图灵之星 2024,转载需注明出处该文件修订时间: 2024-12-14 23:04:04

results matching ""

    No results matching ""