栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

第十一届蓝桥杯省赛C++研究生组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第十一届蓝桥杯省赛C++研究生组

题目

A 约数个数B 寻找2020C 平面分割D 蛇形填数E 七段码F 成绩分析G 回文日期H 作物杂交题目描述I 子串分值和J 荒岛探测

A 约数个数

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

1200000有多少个约数(只计算正约数)。

#include 
using namespace std;
int main(){
    int countn = 0;
    int n = 1200000;
    for(int i = 1; i <= int(pow(n, 1.0 / 2)); i ++){
        if(n % i == 0){
            countn += 2;
        }
    }
    printf("%dn", countn);
    return 0;
}
B 寻找2020

题目链接(输入的数量太大)
https://www.lanqiao.cn/problems/1065/learning/

横向、纵向、对角线方向分别判断相连的四个字符是否是2020即可。

#define _CRT_SECURE_NO_WARNINGS
#include 
using namespace std;

int main()
{
    
    printf("16520n");
    return 0;
}

C 平面分割

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

20 个圆和 20 条直线最多能把平面分成多少个部分?

D 蛇形填数

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

如下图所示,小明用从 11 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 …
3 5 8 14 …
4 9 13 …
10 12 …
11 …

容易看出矩阵第二行第二列中的数是 55。请你计算矩阵中第 2020 行第 2020 列的数是多少?

找规律。对角线为1,5,13,25,41……。两个数相差分别为4,8,12,16,……

#define _CRT_SECURE_NO_WARNINGS
#include 
using namespace std;

int main()
{
    int sumn = 1;
    for(int i = 1; i < 20; i ++){
        sumn += 4 * i;
    }
    printf("%dn", sumn);
    return 0;
}

E 七段码


请问,小蓝可以用七段码数码管表达多少种不同的字符?

F 成绩分析

题目描述
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。

请计算这次考试的最高分、最低分和平均分。

输入描述
输入的第一行包含一个整数 (1 ≤ n ≤ 104),表示考试人数。
接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出描述
输出三行。
第一行包含一个整数,表示最高分。
第二行包含一个整数,表示最低分。
第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。
输入输出样例
输入

7
80
92
56
74
88
99
10

输出

99
10
71.29
#define _CRT_SECURE_NO_WARNINGS
#include 
using namespace std;
int main()
{
  int n;
  scanf("%d", &n);
  int maxn = 0;
  int minn = 101;
  int score;
  long sumn = 0;
  int i;
  for(i = 0; i < n; i ++){
    scanf("%d", &score);
    minn = min(minn, score);
    maxn = max(maxn, score);
    sumn += score;
  }
  cout << maxn << endl;
  cout << minn << endl;
  //cout << setiosflags(ios::fixed) << setprecision(2) << sumn * 1.0 / n;  //C++输出
  printf("%.2f", sumn * 1.0 / n);
  return 0;
}
G 回文日期

题目描述
2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。

有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年 12 月 2 日。

也有人表示 20200202 并不仅仅是一个回文日期,还是一个 ABABBABA 型的回文日期。对此小明也不认同,因为大约 100 年后就能遇到下一个 ABABBABA 型的回文日期:21211212 即 2121 年 12 月 12 日。算不上 “千年一遇”,顶多算 “千年两遇”。

给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个 ABABBABA 型的回文日期各是哪一天。

输入描述
输入包含一个八位整数 NN,表示日期。

对于所有评测用例,10000101≤N≤89991231,保证 N 是一个合法日期的 8 位数表示。

输出描述
输出两行,每行 1 个八位数。第一行表示下一个回文日期,第二行表示下一个 ABABBABA 型的回文日期。

输入输出样例
输入

20200202

输出:

20211202
21211212
#define _CRT_SECURE_NO_WARNINGS
#include 
using namespace std;

int if_legal(int, int, int);
int main()
{
  int n;
  scanf("%d", &n);
  string res1, res2;
  string s = to_string(n);
  //回文日期按年份递增
  int x = stoi(s.substr(0, 4));
  while(1){
    string s1 = to_string(x);
    res1 = s1 + s1[3] + s1[2] + s1[1] + s1[0];
    if(stoi(res1) > n && if_legal(x, stoi(res1.substr(4, 2)), stoi(res1.substr(6, 2)))){
      break;
    }
    x ++;
  }
  // ABABBABA类型按照前两位递增
  int y = stoi(s.substr(0, 2));
  while(1){
    string s2 = to_string(y);
    s2 += s2;
    res2 = s2 + s2[3] + s2[2] + s2[1] + s2[0];
    if(stoi(res2) > n &&if_legal(stoi(s2), stoi(res2.substr(4, 2)), stoi(res2.substr(6, 2)))){
      break;
    }
    y ++;
  }
  cout << res1 << endl;
  cout << res2 << endl;
  return 0;
}

int if_legal(int year, int month, int day){
  int arr[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  if(month > 12){
    return 0;
  }
  if(month == 2){
    if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
      if(day <= 29){
        return 1;
      }
    }else{
      if(day <= 28){
        return 1;
      }
    }
  }else{
    return day <= arr[month];
  }
  return 0;
}
H 作物杂交题目描述

题目描述
作物杂交是作物栽培中重要的一步。已知有 N 种作物 (编号 1 至 N ),第 i 种作物从播种到成熟的时间为Ti 。作物之间两两可以进行杂交,杂交时间取两种中时间较长的一方。如作物 A 种植时间为 5 天,作物 B 种植时间为 7 天,则 AB 杂交花费的时间为 7 天。作物杂交会产生固定的作物,新产生的作物仍然属于 N 种作物中的一种。

初始时,拥有其中 M 种作物的种子 (数量无限,可以支持多次杂交)。同时可以进行多个杂交过程。求问对于给定的目标种子,最少需要多少天能够得到。

如存在 4 种作物 ABCD,各自的成熟时间为 5 天、7 天、3 天、8 天。初始拥有 AB 两种作物的种子,目标种子为 D,已知杂交情况为 A × B → C,A × C → D。则最短的杂交过程为:

第 1 天到第 7 天 (作物 B 的时间),A × B → C。

第 8 天到第 12 天 (作物 A 的时间),A × C → D。

花费 12 天得到作物 D 的种子。

输入描述
输入的第 1 行包含 4 个整数 N, M, K, T,N 表示作物种类总数 (编号 1 至 N),M 表示初始拥有的作物种子类型数量,K 表示可以杂交的方案数,T 表示目标种子的编号。
第 2 行包含 N 个整数,其中第 i 个整数表示第 i 种作物的种植时间 Ti(1≤Ti≤100)。
第 3 行包含 M 个整数,分别表示已拥有的种子类型 j (1≤Kj ≤M),K j 两两不同。
第 4 至 K + 3 行,每行包含 3 个整数 A, B,C,表示第 A 类作物和第 B 类作物杂交可以获得第 C 类作物的种子。

其中,1≤N≤2000,2≤M≤N,1≤K≤10 5 ,1≤T≤N, 保证目标种子一定可以通过杂交得到。

输出描述
输出一个整数,表示得到目标种子的最短杂交时间。
输出描述
输出一个整数,表示得到目标种子的最短杂交时间。
输入输出样例
输入:

6 2 4 6
5 3 4 6 4 9
1 2
1 2 3
1 3 4
2 3 5
4 5 6

输出:

16

样例说明

第 1 天至第 5 天,将编号 1 与编号 2 的作物杂交,得到编号 3 的作物种子。

第 6 天至第 10 天,将编号 1 与编号 3 的作物杂交,得到编号 4 的作物种子。

第 6 天至第 9 天,将编号 2 与编号 3 的作物杂交,得到编号 5 的作物种子。

第 11 天至第 16 天,将编号 4 与编号 5 的作物杂交,得到编号 6 的作物种子。

I 子串分值和

题目描述

输入描述
输入一行包含一个由小写字母组成的字符串 SS。

其中,1 ≤ n ≤ 105

输出描述
输出一个整数表示答案。

输入输出样例
输入

ababc

输出

28


J 荒岛探测

题目描述

输入描述

输出描述
输出一行,包含一个实数,四舍五入保留 2 位小数,表示答案。

考虑到计算中的误差,只要你的输出与参考输出相差不超过 0.01 即可。
输入输出样例
输入:

10 6 4 12 12
0 2 13 2 13 15

输出:

39.99

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/784602.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号