蓝桥杯题-简单题(一)(C++)

目录

成绩分析

饮料换购

刷题统计

扫雷


成绩分析

题目描述

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

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

输入描述

输入的第一行包含一个整数n(1≤n≤10^4),表示考试人数。

接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。

输出描述

输出三行。

第一行包含一个整数,表示最高分。

第二行包含一个整数,表示最低分。

第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。

输入输出样例

示例

输入

7
80
92
56
74
88
99
10

输出

99
10
71.29

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

代码:

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int Score[10050];
    for (int i = 0; i < n; i++) {
        cin >> Score[i];
    }
    int min = Score[0];
    int max = Score[0];
    int sum = 0;
    double avgscore = 0;

    for (int i = 0; i < n; i++) {
        sum = sum + Score[i];
        if (Score[i] < min) {
            min = Score[i];
        }
        if (Score[i] > max) {
            max = Score[i];
        }
    }

    avgscore = (double)sum / n;
    avgscore = round(avgscore*100)/100;
    
    cout << max << endl;
    cout << min << endl;
    printf("%.2f\n",avgscore);
    return 0;
}

饮料换购

乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料,凭 3 个瓶盖可以再换一瓶 C 型饮料,并且可以一直循环下去(但不允许暂借或赊账)。

请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n 瓶饮料,最后他一共能喝到多少瓶饮料。

输入描述

输入一个整数 n(0<n<1000),表示开始购买的饮料数量。

输出描述

输出一个整数,表示实际得到的饮料数

输入输出样例

示例

输入

100

输出

149

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

代码:

#include <iostream>
using namespace std;
#include<math.h>
int main()
{
    // 请在此输入您的代码
    
    int x = 0;
    int n;
    cin >> n;
    int sum = n;
    while (n >= 3) {
        
      x = ceil(n / 3);
      n = n - 2*x;
      sum = sum + x;
           
    }
    cout << sum << endl;
    return 0;
}

刷题统计

问题描述

小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天 做 a 道题目, 周六和周日每天做 b 道题目。请你帮小明计算, 按照计划他将在 第几天实现做题数大于等于 n 题?

输入格式

输入一行包含三个整数 a,b 和 n.

输出格式

输出一个整数代表天数。

样例输入

10 20 99

样例输出

8

评测用例规模与约定

对于 50% 的评测用例, 1≤a,b,n≤10^6.

对于 100%的评测用例, 1≤a,b,n≤10^18.

代码:

#include <iostream>
using namespace std;
#include <math.h>
int main()
{
    // 请在此输入您的代码
    long long a;
    long long b;
    long long n;
    cin >> a;
    cin >> b;
    cin >> n;
    long long week, day = 0;
    week = n / (5 * a + 2 * b);
    int rest = n % (5 * a + 2 * b);
    if (0<= rest <= 50) {
        day = ceil((double)rest / a);
    }
    else {
        day = 5 + ceil(((double)rest - 50) / b);
    }
    day = day + week * 7;
    cout << day << endl;
    return 0;
}

扫雷

题目描述

在一个 n 行 m 列的方格图上有一些位置有地雷,另外一些位置为空。

请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。

输入描述

输入的第一行包含两个整数 n,m。

第 22 行到第 n+1 行每行包含 m 个整数,相邻整数之间用一个空格分隔。如果对应的整数为 00,表示这一格没有地雷。如果对应的整数为 11,表示这一格有地雷。

其中,1≤n,m≤100 分钟后还是在当天。

输出描述

输出 n 行,每行 m 个整数,相邻整数之间用空格分隔。

对于没有地雷的方格,输出这格周围的地雷数量。对于有地雷的方格,输出 99。

输入输出样例

示例 1

输入

3 4
0 1 0 0
1 0 1 0
0 0 1 0

输出

2 9 2 1
9 4 9 2
1 3 9 2

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

代码:

#include <iostream>
using namespace std;
int main()
{
    // 请在此输入您的代码
    int n, m;
    cin >> n;
    cin >> m;

    int arr[100][100];
    int brr[100][100];
    int crr[102][102];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> arr[i][j];
        }
        cout << endl;
    }
    for (int i = 0; i <= n + 1; i++) {
        for (int j = 0; j <= m + 1; j++) {
            if (i == 0 | i == n + 1 | j == 0 | j == m + 1) {
                crr[i][j] = 0;
            }
            else {
                crr[i][j] = arr[i - 1][j - 1];
            }
        }
    }

    for (int i = 1; i < n + 1; i++) {
        for (int j = 1; j < m + 1; j++) {
            if (crr[i][j] == 1) {
                brr[i - 1][j - 1] = 9;
            }
            else {
                brr[i - 1][j - 1] = crr[i - 1][j - 1] + crr[i - 1][j] + crr[i - 1][j + 1] + crr[i][j - 1] + crr[i][j + 1] + crr[i + 1][j - 1] + crr[i + 1][j + 1]+crr[i+1][j];
            }
            cout << brr[i - 1][j - 1] << " ";
        }
        cout << endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_45922730/article/details/129771477