第11届蓝桥杯C++B组省赛

第11届蓝桥杯C++B组省赛,第1张

第一题,门牌号

手撕就行了。



代码:

#include
using namespace std;

int main()
{
    int cnt = 0;
    for(int i = 1; i <= 2020; i++)
    {
        string str = to_string(i);
        for(int j = 0; j < str.size(); j++)
        {
            if(str[j] == 50)
            cnt++;
        }
    }
    cout << cnt << endl;
 }


第二题 既约分数

手撕

代码

int main()
 {
     int cnt = 0;
     for(int i = 1; i <= 2020; i++)
     {
         for(int j =1; j <= 2020; j++ )
         {
             if(i == j)
             continue;
             if(__gcd(i,j) == 1)
             cnt++;
         }
     }
     cnt += 1;
     cout << cnt << endl;
     return 0;
  }


第三题,蛇形填数


思路:

手动模拟

细节见代码注释。



代码

 

int main()
  {
      int i = 2, j = 0;
      int flag = 0;        //0默认为向上, 1为向下。


 
      int dp[100][100] = {0};
    int k = 4;
    //初始化;
    dp[0][0] = 1; dp[1][0] = 3; dp[0][1] = 2; 
      while(1)
      {
          if(flag == 0)    //向上 
          {
              while(1)
              {
                  dp[i][j] = k++;
                i--; j++;
                if(i == -1)
                {
                    flag = 1;
                    i = 0;
                    break;
                }
            }          
           } 
           if(flag == 1)    //向下
           {
                while(1)
                {
                    dp[i][j] = k++;
                    i++; j--;
                    if(j == -1)
                    {
                        flag = 0;
                        j = 0;
                        break;
                    }
                }
            }
            
        if(i >= 50)
        break;      
      }
      cout << dp[19][19] << endl;
   }

 


第四题 跑步锻炼

思路:手动模拟

细节见代码注释

 

int SUM()
   {
       int    a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
       int week = 6, day = 1;
       int year = 0, month = 0;
       int sum = 0;
    for(year = 2000; year <= 2020; year++)
    {
        //判断闰年
        if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) 
        a[2] = 29;
        for(month = 1; month <= 12; month++)
        {
            day = 1;
            while(1)
            {
                if(week == 8)
                {
                    week = 1;
                }
                if(day == 1 || week == 1)
                {
                        sum += 2;
                }
                //正常情况
                else
                sum += 1; 
                day++; week++;
                if(day == a[month] + 1)
                break;
                if(month == 10 && year == 2020 && day == 2)
                {
                        return sum;
                                
                }
            }
        }
                    a[2] = 28;            //重置
    }

int main()
{
    cout << SUM() << endl;
}


第五题,七段码

要用图的知识,作为菜鸟的我,还不会。


但可以手动数出来。


 

 

 

第六天,成绩统计

思路,手撕就行了,但注意格式输出。



代码,


int main()
 {
     int n = 0, score = 0;
     int sum = 0;
     int jige = 0, youxiu = 0;
     scanf("%d",&n);
     for(int i = 0; i < n; i++)
     {
         scanf("%d",&score);
         if(score >= 60)
         jige++;
         if(score >= 85)
         youxiu++;
     }
     double one = 0.0;
     double two =0.0;
     one = jige/(n * 1.0) * 100;
     two = youxiu/(n *1.0) * 100;
     int result1 = one + 0.5;
     int result2 = two + 0.5;
     printf("%d%\n",result1);
     printf("%d%\n",result2);
     return 0;
  } 


 

第七题,子串分值和

思路:利用循环截取子串,在排序后,判断无重复字母的个数。



代码,

int no_copy(string str)
{
    int n = str.size();
    int cnt = 1;
    for(int i = 0; i < n - 1; i++)
    {
        if(str[i] != str[i + 1])
        cnt++;
    }
    return cnt;
 }
 
int main()
{
    string str;
    string Substr;
    int sum = 0;
    cin >> str;
    for(int i = 0; i < str.size(); i++)
    {
        for(int j = i + 1; j < str.size(); j++)
        {
            Substr = str.substr(i,j - i + 1);
            sort(Substr.begin(), Substr.end());
            sum += no_copy(Substr);    
        }
    }
    sum += str.size();
    cout << sum << endl;
    return 0;
}


 

能做的就这几道题,不能再混日子等死,好好努力呀

总结,

蓝桥杯,注意细节,暴力破解,能拿一半的分,明天比赛加油。


 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/568495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存