天梯赛L1-001 ~ 010

news2025/1/11 0:35:11

👂 White Lie - Jhameel - 单曲 - 网易云音乐

👂 丁丁猫儿 - 施鑫文月 - 单曲 - 网易云音乐

今年蓝桥 / 天梯都陪跑,希望明年,蓝桥杯省一(C++A组60分),天梯赛国三(180分)

目录

🌼一,L1-001 Hello World

🌼二,L1-002 打印沙漏

🌼三,L1-003 个位数统计

🌼四,L1-004 计算摄氏温度

🌼五,L1-005 考试座位号

🌼六,L1-006 连续因子  

🌼七,L1-007 念数字

🌼八,L1-008 求整数段和

🌼九,L1-009 N个数求和

🌼十,L1-010 比较大小

🥁总结


🌼一,L1-001 Hello World

题目详情 - L1-001 Hello World (pintia.cn)

满分5

#include<iostream>
using namespace std;
int main()
{
    cout<<"Hello World!";
    return 0;
}

🌼二,L1-002 打印沙漏

题目详情 - L1-002 打印沙漏 (pintia.cn)

满分20

 

满分20

1,先找规律,显然,也就是正数前缀和的基础上,+= i / 2,i是当前的奇数,比如7

就是28 + 7 / 2 = 28 + 3 = 31

2,有个,代码第15行,if(n >= a[i] && n < a[i + 2]),表示给定的数字最大满足 i 个*一行

外面for循环中,已经表示i += 2的奇数了,第一次没对应写成了a[i + 1]

debug二十分钟才找到问题

#include<iostream>
using namespace std;
int a[50]; //保存i颗*对应的字符数
int main()
{
    int n;
    char z;
    cin>>n>>z;
    for(int i = 1; i <= 50; i++)
        a[i] = i + a[i - 1];
    for(int i = 1; i <= 50; i +=2)
        a[i] += i / 2;
    int m;
    for(int i = 1; i <= 50; i += 2)
        if(n >= a[i] && n < a[i + 2]) { //这里是a[i + 2]而不是a[i + 1]
            m = i; //得到单行最大符号数
            break;
        }

    int mm = m, space = 0; //space当前空格数
    //倒三角
    while(mm > 0) {
        for(int i = 0; i < space; ++i)
            cout<<" "; //打印空格
        for(int i = 0; i < mm; ++i)
            cout<<z; //打印字符
        cout<<endl;
        space++;
        mm -= 2;
    }
    mm = 3;
    space = (m - mm) / 2;
    //正三角不算第一行
    while(mm <= m) {
        for(int i = 0; i < space; ++i)
            cout<<" ";
        for(int i = 0; i < mm; ++i)
            cout<<z;
        cout<<endl;
        space--;
        mm += 2;
    }
    cout<<n - a[m]; 

    return 0;
}

🌼三,L1-003 个位数统计

题目详情 - L1-003 个位数统计 (pintia.cn)

满分15

考察字符串转ASCII

#include<iostream>
using namespace std;
string s;
int a[20];

int main()
{
    cin>>s;
    for(int i = 0; i < s.size(); ++i)
        a[s[i] - '0']++;
    for(int i = 0; i <= 9; ++i)
        if(a[i] != 0) {
            cout<<i<<":"<<a[i]<<endl;
        }
    return 0;
}

🌼四,L1-004 计算摄氏温度

题目详情 - L1-004 计算摄氏温度 (pintia.cn)

满分5 

输出整数部分,int 满足

注意按要求输出

#include<iostream>
using namespace std;

int main()
{
    int f;
    cin>>f;
    cout<<"Celsius = "<<5 * (f - 32) / 9;
    return 0;
}

🌼五,L1-005 考试座位号

题目详情 - L1-005 考试座位号 (pintia.cn)

满分15 

三个变量联系起来,需要结构体

关于根据试机号查询其他两个量,一开始我想用二分,后来发现直接排序就能输出了

#include<iostream>
#include<algorithm> //sort()
using namespace std;
struct node
{
    long long num, id1, id2;
}a[1010];
bool cmp(node x, node y)
{
    return x.id1 < y.id1;
}
int main()
{
    int n, q, t;
    cin>>n;
    for(int i = 1; i <= n; ++i)
        cin>>a[i].num>>a[i].id1>>a[i].id2;
    sort(a + 1, a + n + 1, cmp); //按试机号排序
    cin>>q;
    for(int i = 0; i < q; ++i) {
        cin>>t;
        cout<<a[t].num<<" "<<a[t].id2<<endl;
        }
    return 0;
}

🌼六,L1-006 连续因子  

满分20

题目详情 - L1-006 连续因子 (pintia.cn)

做了挺久,2小时是有了,磕磕绊绊从2分 --> 5分 --> 19分 --> 20分

1,输出的是最小连续因子数,所以,比如输入9999,你不能输出1 9999

而要输出1 3,考虑到这里,需要初始化len = 0, num = 0

len为连续因子长度,num为连续因子第一个数

2,注意题目,1不算因子

3,开头写个判断素数的函数

4,代码第29行,保证乘积不超过n

5,代码第31行很关键,保证连续因子乘积依然是n的因子,且长度更大,即可更新

6,要会求因子,遍历2~sqrt(n),如果 n % i == 0表示i是n的因子,不需要遍历后面是因为,题目求的是连续的,平方根往后的因子肯定是断开的,毕竟sqrt(n) * sqrt(n)已经 == n了

#include<iostream>
#include<cmath> //sqrt()
using namespace std;

//素数的因子只有1和本身
bool prime(long long x)
{
    for(int i = 2; i <= sqrt(x); ++i)
        if(x % i == 0)
            return false; //不是素数
    return true;
}

int main()
{
    //pro连续乘积, len连续子序列长度, num连续子序列第一个数
    long long n, pro, len, num;
    cin>>n;
    //判断素数
    if(prime(n))
        cout<<1<<endl<<n;
    //不是素数
    else {
        //初始化num为0, len为0, 因为要输出"最小"的连续因子序列
        len = 0, num = 0;
        //遍历2~sqrt(n)
        for(int i = 2; i <= sqrt(n); ++i) {
            pro = 1;
            for(int k = i; pro * k <= n; ++k) { //保证乘积不超过n
                pro *= k;
                if(n % pro == 0 && k - i + 1 > len) { //关键
                    len = k - i + 1;
                    num = i;
                }
            }
        }
        //输出答案
        cout<<len<<endl;
        for(int i = num; i <= num + len - 1; ++i) {
            cout<<i;
            if(i != num + len - 1)
                cout<<'*';
        }
    }
    return 0;
}

🌼七,L1-007 念数字

题目详情 - L1-007 念数字 (pintia.cn)

满分10

注意几个点

1,switch, case, break的用法,能简化程序

2,注意,行末无空格

3,字符转ASCII

AC  代码

#include<iostream>
using namespace std;
int main()
{
    string s;
    int fir = 0;
    cin>>s;
    if(s[0] == '-') {
        cout<<"fu";
        if(s.size() > 1) cout<<" "; //行末无空格
        fir = 1;
    }
    for(int i = fir; i < s.size(); ++i) {
        switch(s[i] - '0') { //字符转ASCII
            case 0: cout<<"ling"; break;
            case 1: cout<<"yi"; break;
            case 2: cout<<"er"; break; //注意break
            case 3: cout<<"san"; break;
            case 4: cout<<"si"; break;
            case 5: cout<<"wu"; break;
            case 6: cout<<"liu"; break;
            case 7: cout<<"qi"; break;
            case 8: cout<<"ba"; break;
            case 9: cout<<"jiu"; break;
        }
        if(i != s.size() - 1) cout<<" "; //行末无空格
    }
    return 0;
}
-
fu

0
ling

-82654981
fu ba er liu wu si jiu ba yi

🌼八,L1-008 求整数段和

题目详情 - L1-008 求整数段和 (pintia.cn)

满分10

1,考察占位函数setw()的使用,头文件#include<iomanip>

2,每5个数换行一次,多测试几次,防止粗心

AC  代码

#include<iostream>
#include<iomanip> //setw()
using namespace std;
int main()
{
    int a, b, sum = 0;
    cin>>a>>b;
    for(int i = a; i <= b; ++i)
        sum += i;
    for(int i = a; i <= b; ++i) {
        cout<<setw(5)<<i; //占5个位
        if((i - a + 1) % 5 == 0) //每5个数换行一次
            cout<<endl;
    }
    if((b - a + 1) % 5 != 0) cout<<endl; //上面少一次换行的话
    cout<<"Sum = "<<sum;
    return 0;
}
-7 22
   -7   -6   -5   -4   -3
   -2   -1    0    1    2
    3    4    5    6    7
    8    9   10   11   12
   13   14   15   16   17
   18   19   20   21   22
Sum = 225

-5 11
   -5   -4   -3   -2   -1
    0    1    2    3    4
    5    6    7    8    9
   10   11
Sum = 51

🌼九,L1-009 N个数求和

前10题通过率最低的一题,16.28%,也做了最久....也许是2.5个小时.....

满分20

题目详情 - L1-009 N个数求和 (pintia.cn)

 

思路

1,求最大公约数(写个gcd函数)

欧几里得算法(辗转相除法),公式:gcd(a,b) = gcd(b,a mod b)

2,求所有分母最小公倍数,两两计算即可,也只用遍历一遍

3,一开始一直在纠结负数怎么处理,其实不需要处理,整型是包括负数的,scanf()读入

注意

1,长整型范围,用long long

2,对输出的结果分类讨论,存在0,负数,假分数,真分数等情况

AC  代码

#include<iostream>
#include<cstdio> //scanf()
using namespace std;

#define LL long long
long long a[110], b[110]; //保存分子 / 分母

LL gcd(LL x, LL y) //求最大公约数
{
    LL temp;
    while(x % y) {
        temp = x % y;
        x = y;
        y = temp;
    }
    return y;
}

int main()
{
    int n;
    cin>>n;
    //输入
    for(int i = 0; i < n; ++i)
        scanf("%lld/%lld", &a[i], &b[i]); //不用cin, 考虑到中间的/
    //求所有分母最小公倍数
    LL M = b[0];
    for(int i = 1; i < n; ++i)
        M =  M * b[i] / gcd(M, b[i]);
    //求分子的和
    for(int i = 0; i < n; ++i) {
        a[i] *= (M / b[i]); //通分后的分子
        if(i != 0)
            a[i] += a[i - 1]; //前缀和得到分子的和
    }
    //分类讨论输出答案
    LL GYS = gcd(a[n - 1], M); //最大公约数
    LL zi = a[n - 1] / GYS, mu = M / GYS; //化简分子分母
    //结果=0
    if(zi == 0)
        cout<<0;
    //结果<0
    else if(zi > 0) {
        if(zi % mu == 0) cout<<zi / mu;
        else if(zi < mu) cout<<(zi % mu)<<"/"<<mu;
        else cout<<zi / mu<<" "<<(zi % mu)<<"/"<<mu;
    }
    //结果>0
    else {
        if(zi % mu == 0) cout<<zi / mu;
        else if(zi < mu) cout<<(zi % mu)<<"/"<<mu;
        else cout<<zi / mu<<" "<<(zi % mu)<<"/"<<mu;
    }

    return 0;
}

🌼十,L1-010 比较大小

满分10

题目详情 - L1-010 比较大小 (pintia.cn)

AC  代码

#include<iostream>
using namespace std;
int main()
{
    int a, b, c, Min, Max, Middle;
    cin>>a>>b>>c;
    Min = min(min(a, b), c); //最小值
    Max = max(max(a, b), c); //最大值
    Middle = a + b + c - Min - Max; //中间值
    cout<<Min<<"->"<<Middle<<"->"<<Max;
    return 0;
}

🥁总结

复盘一下欠缺的地方

1,scnaf()和cin的使用不够灵活,拘泥于其中一种

      2,一些基础函数或者简单算法不熟练,比如setw()占位,gcd()辗转相除法求公约数,

            prime()判断素数,

3,模拟的题,容易心急跳步,导致出错,或者分类讨论不够全面

      4,读题不够准确,常常误解题意或输出无关的值

5,数组越界,整型范围,复杂度,找规律(老生常谈了)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/482685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详细的实用技巧,让你轻松成为WEB自动化测试大师

目录 一、什么是WEB自动化测试 二、WEB自动化测试工具 三、SeleniumPython环境搭建 1. 安装Python解释器 2. 安装Selenium库 3. 下载浏览器驱动程序 4. 配置环境变量 四、WEB自动化测试实战 1. 编写测试脚本 2. 使用Page Object模式 3. 使用数据驱动测试 五、总结 …

【PowerDesigner】一款超好用的E-R图工具,快速构建出高质量的数据库结构,提高开发效率和代码质量

博主简介&#xff1a;努力学习的大一在校计算机专业学生&#xff0c;热爱学习和创作。目前在学习和分享&#xff1a;数据结构、Go&#xff0c;Java等相关知识。博主主页&#xff1a; 是瑶瑶子啦所属专栏: Mysql从入门到精通 近期目标&#xff1a;写好专栏的每一篇文章 文章目录…

IPsec IKE第一阶段主模式和野蛮模式

国密标准GMT 0022-2014 IPSec VPN 技术规范&#xff0c;IPsec IKE过程中交换类型的定义将主模式Main mode分配值为2&#xff0c;快速模式-quick mode分配值为32。标准中并没有提现分配值为4的交换类型。在实际应用中&#xff0c;IKE第一阶段经常会出现交换类型为4的情况&#x…

留守儿童爱心网站

摘要 随着留守儿童爱心管理的不断发展&#xff0c;留守儿童爱心网站在现实生活中的使用和普及&#xff0c;留守儿童爱心管理成为近年内出现的一个热门话题&#xff0c;并且能够成为大众广为认可和接受的行为和选择。设计留守儿童爱心网站的目的就是借助计算机让复杂的管理操作…

【C++】-关于类和对象的默认成员函数(中)-拷贝构造函数和赋值运算符重载函数

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 ❤️‍&#x1fa79;作者宣言&#xff1a;认真写好每一篇博客 &#x1f4a8;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点…

带你玩转单向链表(学习必备)

本文概要 本篇文章主要介绍数据结构中单向链表各种操作&#xff0c;适合有C语言基础的同学&#xff0c;文中描述和代码示例很详细&#xff0c;干货满满&#xff0c;感兴趣的小伙伴快来一起学习吧&#xff01; &#x1f31f;&#x1f31f;&#x1f31f;个人简介&#x1f31f;&…

Redis入门到实战(实战篇)

Redis基础篇 实战篇Redis 开篇导读 亲爱的小伙伴们大家好&#xff0c;马上咱们就开始实战篇的内容了&#xff0c;相信通过本章的学习&#xff0c;小伙伴们就能理解各种redis的使用啦&#xff0c;接下来咱们来一起看看实战篇我们要学习一些什么样的内容 短信登录 这一块我们会使…

携程:一个被严重低估了的在线旅游平台?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 携程和旅游行业面临的不利因素依然存在 在疫情期间&#xff0c;由于全球范围内的旅行受到了限制&#xff0c;所以整个旅游行业都受到了巨大打击。休闲旅游和商务旅行也陷入了停顿&#xff0c;此后一直在缓慢恢复。 而当疫情…

Java8流式操作——最终操作

什么是最终操作&#xff1f; 当我们通过最终方法对流对象进行操作&#xff0c;说明stream流操作也完成&#xff0c;最后我们将对象汇总成一个结果&#xff08;总数、对象、集合……&#xff09; 方法 collect&#xff1a;将Stream中的元素汇总&#xff08;转化&#xff09;成…

探索三维世界【2】:Three.js 的 Texture 纹理

缤纷三维世界大揭秘&#xff1a;探索 Three.js 的 Texture 纹理 1、Texture纹理2、TextureLoader 纹理加载器2.1、创建纹理加载器2.2、纹理属性设置2.3、设置纹理渲染2.4、打光 3、完整代码与展示 1、Texture纹理 Texture 是 three.js 中的“纹理”概念。纹理是指将一张图像映…

ESP8266基于Lua开发使用U8g2模块驱动 i2c ssd1306 OLED显示

ESP8266基于Lua开发使用U8g2模块驱动 i2c ssd1306 OLED显示 &#x1f4cd;相关篇《ESP8266基于Lua开发点灯示例》 &#x1f4d6;U8g2对应的API接口函数&#xff1a;https://nodemcu.readthedocs.io/en/release/modules/u8g2/ &#x1f4fa;驱动显示效果&#xff1a; &#…

Winform从入门到精通(38)——StatusStrip(史上最全)更新中

一、属性 1、Name 获取StatusStrip控件对象 2、AllowDrop 允许用户拖拽数据到控件上 3、AllowItemReorder 当用于按下alt键时,是否允许对项进行排列,如下图: 4、AllowMerge 5、Anchor 6、AutoSize 7、BackColor 设置StatusStrip的背景色 8、BackgroundImage 设置背…

解决wordpress 没有“add new“按钮

文章目录 问题描述解决方案两个参数的详细解释DISALLOW_FILE_EDITDISALLOW_FILE_MODS 问题描述 新安装的wordpress发现没有“add new“按钮&#xff0c;很奇怪。 解决方案 修改wp-config.php文件&#xff0c;增加如下两行即可修复问题&#xff1a; define(‘DISALLOW_FILE_E…

【实战详解】如何快速搭建接口自动化测试框架?:Python + Requests

摘要&#xff1a; 本篇文章将介绍如何基于Python和Requests库快速搭建一个简单而高效的接口自动化测试框架。您将会了解到设计测试用例、准备测试数据、编写自动化脚本等步骤&#xff0c;以及如何使用断言来检查测试结果&#xff0c;并最终构建一个可重用、易扩展的自动化测试…

【前端每日一问002】jquery中each与data方法的用法与概念

在 jQuery 中&#xff0c;.each() 方法和 .data() 方法都是常用的工具。这两个方法的用法和概念如下&#xff1a; &#x1f319;一、.each() 方法&#xff1a; .each() 方法是 jQuery 对象的方法&#xff0c;用于遍历匹配元素集合中的所有元素&#xff0c;并对每个元素执行一个…

【LeetCode】1000题挑战(225/1000)

1000题挑战 没有废话&#xff0c;直接开刷&#xff01; 目录 1000题挑战 没有废话&#xff0c;直接开刷&#xff01; 第一题&#xff1a;202. 快乐数 - 力扣&#xff08;Leetcode&#xff09; 题目接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过过过过啦…

基于W1R3S的渗透测试

您被雇来对W1R3S做渗透测试&#xff0c;他们要求您获得root权限并找到标志(位于/root目录中)。 目标&#xff1a;得到root权限&找到flag.txt 目录 1、信息收集 &#xff08;1&#xff09;定位靶机IP &#xff08;2&#xff09;端口扫描 &#xff08;3&#xff09;脚本…

【HTMLCSSJS】写实验发现的一些注意点

&#x1f38a;专栏【 前端易错合集】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 目录 &#x1f6a5;innerHtml和innerText的区别 &#x1f3f…

28-Servlet API

1.HttpServlet 我们写 Servlet 代码的时候&#xff0c;⾸先第⼀步就是先创建类&#xff0c;继承⾃ HttpServlet&#xff0c;并重写其中的某些⽅法。 1.1.核心方法 实际开发的时候主要重写 doXXX ⽅法&#xff0c;很少会重写 init / destory / service。 这些⽅法的调⽤时机&…

c++基础-运算符

目录 1关系运算符 2运算符优先级 3关系表达式的书写 代码实例&#xff1a; 下面是面试中可能遇到的问题&#xff1a; 1关系运算符 C中有6个关系运算符&#xff0c;用于比较两个值的大小关系&#xff0c;它们分别是&#xff1a; 运算符描述等于!不等于<小于>大于<…