当前位置: 首页 > news >正文

蓝桥杯刷题笔记

奇怪的捐赠

#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
int main(){
    // 初始化变量num为1000000,代表总金额为100万元
    int num = 1000000;
    // 初始化变量cnt为0,用于记录最终划分的份数
    int cnt = 0;
    // 当num不为0时,持续进行循环,此循环的目的是将总金额按七进制拆分
    while(num) {
        // num % 7 计算出当前num在七进制下的最低位数字
        // 这个数字代表了当前7的0次方(即1元)这一份额的数量
        // 将其累加到cnt中
        cnt += num % 7;
        // num /= 7 相当于将num在七进制下右移一位
        // 也就是去掉当前七进制表示中的最低位,继续处理更高位
        num /= 7;
    }
    // 输出最终划分的份数
    cout << cnt;

    return 0;
}
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;

int main() {
    // 初始金额为100万元,单位为元
    int money = 1000000;
    // 用于记录划分的份数,初始化为0
    int cnt = 0;
    // 从7的0次方到7的7次方进行遍历,这里k表示7的幂次,从大到小遍历
    for(int k = 7; k >= 0; k--) {
        // 计算当前7的k次幂能划分出的份数,即总金额除以当前7的幂次方
        int numitems = money / pow(7, k);
        // 如果划分出的份数大于5份,按照要求最多只能取5份
        if(numitems > 5) numitems = 5;
        // 将当前划分的份数累加到总份数cnt中
        cnt += numitems;
        // 从总金额中减去当前划分所使用的金额
        money -= numitems * pow(7, k);
        // 如果总金额已经为0,说明已经全部分完,跳出循环
        if(money == 0) break;
    }
    // 输出划分的总份数
    cout << cnt;
    return 0;
}

 排序

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

// 自定义比较函数 cmp,用于降序排序
bool cmp(int a, int b) {
    return a > b;
}

int main() {
    int n;
    cin >> n;
    // 使用 vector 动态数组存储输入的整数
    vector<int> a(n);

    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }

    // 升序排序
    sort(a.begin(), a.end());

    for (int i = 0; i < n; i++) {
        cout << a[i];
        if (i < n - 1) {
            cout << " ";
        }
    }
    cout << "\n";

    // 降序排序
    sort(a.begin(), a.end(), cmp);

    for (int i = 0; i < n; i++) {
        cout << a[i];
        if (i < n - 1) {
            cout << " ";
        }
    }

    return 0;
}
#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;

// 定义一个常量 maxn,用于数组的最大长度,这里设置为 1e9 + 9
const long long maxn = 5e5+9;
// 定义一个整数数组 a,用于存储输入的整数
long long a[maxn];

// 自定义比较函数 cmp,用于降序排序
bool cmp(long long a, long long b) {
    // 如果 a 大于 b,则返回 true,否则返回 false
    return a > b;
}

int main() {
    // 定义一个整数 n,用于存储输入整数的数量
    long long n;
    // 从标准输入读取整数 n
    cin >> n;

    // 循环读取 n 个整数,并存储到数组 a 中
    for (long long i = 0; i < n; i++) {
        cin >> a[i];
    }

    // 使用 sort 函数对数组 a 进行升序排序,默认情况下 sort 是升序排序
    sort(a, a + n);

    // 循环输出升序排序后的数组元素,元素之间用空格分隔
    for (long long i = 0; i < n; i++) {
        cout << a[i];
        if (i < n - 1) {
            cout << " ";
        }
    }
    // 输出换行符
    cout << "\n";

    // 使用 sort 函数和自定义比较函数 cmp 对数组 a 进行降序排序
    sort(a, a + n, cmp);

    // 循环输出降序排序后的数组元素,元素之间用空格分隔
    for (long long i = 0; i < n; i++) {
        cout << a[i];
        if (i < n - 1) {
            cout << " ";
        }
    }

    return 0;
}

 1. 单词分析

#include <cstdio>
#include <iostream>
#include <string> // 因为使用了 string 类型,需要包含该头文件
using namespace std;

// 定义一个长度为 26 的整型数组 cnt,用于统计每个小写英文字母出现的次数
// 数组下标 0 到 25 分别对应字母 'a' 到 'z'
int cnt[26];

int main(){
    // 定义一个字符串变量 s,用于存储从标准输入读取的字符串
    string s;
    // 从标准输入读取一个字符串,并将其存储到 s 中
    cin >> s;

    // 遍历字符串 s 中的每一个字符
    for(int i = 0; i < s.size(); i++){
        // s[i] - 'a' 可以将字符 s[i] 转换为对应的数组下标
        // 例如,若 s[i] 为 'a',则 s[i] - 'a' 为 0;若 s[i] 为 'b',则 s[i] - 'a' 为 1,以此类推
        // 然后将对应下标的数组元素值加 1,即统计该字母出现的次数
        cnt[s[i] - 'a']++;
    }

    // 定义一个字符变量 ans1,用于存储出现次数最多的字母
    char ans1;
    // 定义一个整型变量 ans2,用于存储出现次数最多的字母的出现次数,初始化为 0
    int ans2 = 0;

    // 遍历数组 cnt,数组长度为 26,代表 26 个小写英文字母
    for(int i = 0; i < 26; i++){
        // 如果当前字母的出现次数(即 cnt[i])大于之前记录的最大出现次数(即 ans2)
        if(cnt[i] > ans2) {
            // 更新最大出现次数为当前字母的出现次数
            ans2 = cnt[i];
            // 将当前字母(通过 i + 'a' 转换为字符形式)赋值给 ans1
            ans1 = (i + 'a');
        }
    }

    // 输出出现次数最多的字母
    cout << ans1 << "\n";
    // 输出出现次数最多的字母的出现次数
    cout << ans2;

    // 程序正常结束,返回 0
    return 0;
}

成绩统计

#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;

// 定义一个常量 maxn,用于可能的数组大小等场景,这里虽未使用数组,但一般会这样预留
const int maxn = 1e4 + 10;

int main() {
    // 定义一个双精度浮点数 n,用于存储输入的学生数量
    double n;
    // 从标准输入读取学生数量并存储到 n 中
    cin >> n;

    // 定义一个双精度浮点数 k 并初始化为 n,k 后续会用于计算比例
    double k = n;

    // 定义一个整型变量 x,用于临时存储每个学生的成绩
    int x;

    // 定义两个双精度浮点数 good 和 great,分别用于记录成绩大于等于 60 分和大于等于 85 分的学生数量
    double good = 0, great = 0;

    // 循环 n 次,每次循环处理一个学生的成绩
    while (n--) {
        // 从标准输入读取一个学生的成绩并存储到 x 中
        cin >> x;
        // 如果该学生的成绩大于等于 60 分
        if (x >= 60) {
            // 成绩大于等于 60 分的学生数量加 1
            good++;
        }
        // 如果该学生的成绩大于等于 85 分
        if (x >= 85) {
            // 成绩大于等于 85 分的学生数量加 1
            great++;
        }
    }

    // 计算成绩大于等于 60 分的学生所占的百分比
    double ans1 = (double)good / k * 100;
    // 计算成绩大于等于 85 分的学生所占的百分比
    double ans2 = (double)great / k * 100;

    // 以整数形式输出成绩大于等于 60 分的学生所占的百分比,并添加百分号
    // 第二个 % 前少了一个点,应该是 %.0f 来表示以整数形式输出
    printf("%.0f%%\n%.0f%%", ans1, ans2);

    // 程序正常结束,返回 0
    return 0;
}

相关文章:

  • 福田公司总部大厦甘肃seo网站
  • 上海建设小学网站网页广告怎么投放
  • 微信微网站怎么做公司网站制作费用
  • 做网站的公司怎么赚钱吗关键词在线听免费
  • 广东网站建设工作关键词优化公司如何选择
  • 成都 网站建设 公司电子商务营销模式有哪些
  • # 利用OpenCV和Dlib实现疲劳检测:守护安全与专注
  • SMT加工贴片核心工艺解析
  • 我的二周年创作纪念日
  • 2024版idea使用Lombok时报找不到符号
  • Apache 配置负载均衡详解(含配置示例)
  • P1125 [NOIP 2008 提高组] 笨小猴
  • SQL Server常见问题的分类解析(一)
  • Hibernate里的对象不同状态和Session的核心方法
  • 2025年3月通信科技周报(3.24-3.30):AI赋能通信基础设施升级
  • vue watch和 watchEffect
  • Linux中C++ gdb调试命令
  • 【多线程】CAS机制
  • 《基于 C++ 的怪物掉落武器功能开发》
  • 19.go日志包log
  • 拍摄的婚庆视频有些DAT的视频文件打不开怎么办
  • JavaScript学习21-事件类型之键盘事件
  • 【STM32】Flash详解
  • Mysql的备份还原
  • 算法刷题记录——LeetCode篇(2.4) [第131~140题](持续更新)
  • OFP--2018