蓝桥杯-刷题-补基础

news2024/11/14 17:13:27

十道入门题 

题目来源,题目,简单解析,代码,输入输出

目录

前言 

一,汉诺塔 

二,判断闰年

三,大写变小写 

四,破译密码

五,反向数相加

六,Excel表中的列号

七,饮料兑换

八,角谷猜想

九,数字统计

十,素数

总结


 

前言 

欢迎小白和我一起学习,按部就班投入时间,比平均水平多学100个小时,你就是top30%,比平均多学1000个小时,你就是top1% 

3个月前,一道入门题中的入门题我都要半小时甚至一小时才做的出,经过最近一个月认真的刷题和算法学习,现在一道入门题可能就是3分钟(读题目+草稿纸模拟)+ 2分钟敲代码)(ง •_•)ง

当然,现在只能快速做出70%的入门题,依旧有30%知识盲区,所以,补基础来了 

比如判断两线段相交叉乘,让你5分钟内敲出来,是否可以呢,还是冥思苦想 + 百度,足足20分钟才能做出来呢?

一,汉诺塔 

P1042 - 汉诺塔问题 - New Online Judge (ecustacm.cn)

题目 

输入样例

2

输出样例

3
a->b
a->c
b->c

思路 

1, hanoi()中的a, b, c参数要用char,因为输入的是字符 

2, 最后先输出移动次数,再输出移动过程

3, n == 1表示这条柱子上就剩一个圆盘

4, void hanoi(int n, char a, char b, char c); 表示将柱子a上的n个圆盘, 移动到柱子c, b作为中转

难以理解的,可以在本子上模拟一下四个圆盘的情况

代码 

#include<iostream>
#include<cstdio> //printf()
using namespace std;
void hanoi(int n, char a, char b, char c)
{   //n == 1时, 最大的圆盘从a移到c
    if(n == 1) printf("%c->%c\n", a, c);
    else {
        hanoi(n - 1, a, c, b); //n-1个圆盘从a移到b, c是中转
        printf("%c->%c\n", a, c);
        hanoi(n - 1, b, a, c); //n-1个圆盘从b移到c, a是中转
    }
}
int main()
{
    int n, ans = 1;
    cin>>n;
    for(int i = 2; i <= n; ++i) ans = ans * 2 + 1;
    cout<<ans<<endl;
    hanoi(n, 'a', 'b', 'c');
    return 0;
}
3
7
a->c
a->b
c->b
a->c
b->a
b->c
a->c

二,判断闰年

P1043 - 判断是否是闰年 - New Online Judge (ecustacm.cn)

 

#include<iostream>
using namespace std;
int main()
{
    int year;
    while(cin>>year) {
        if(year%400 == 0 || (year%100 != 0 && year%4 == 0))
            cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}

三,大写变小写 

P1044 - 大写变小写 - New Online Judge (ecustacm.cn)

题目 

输入样例

A S D F G H J K L
123+@
a

输出样例

asdfghjkla

思路

重点在于

1,多次输入字符串     

2,输入的字符串包含空格 

C++输入包含空格的字符串,输出最大值出现次数_码龄11天的博客-CSDN博客

我们可以声明char数组,也可以声明string类,当然输入和求长度也会不一样

声明为string的话, (输入)string str; getline(cin, str); (求长度)str.length()

声明为char的话, (输入)char str[1000]; gets(str); (求长度)strlen(str)

头文件#include<cstdio>和#include<cstring>

代码

#include<iostream>
#include<cstdio> //scanf(), gets()
#include<cstring> //strlen()
using namespace std;
int main()
{
    char s[1000];
    string s2;
    while(gets(s)) {
        for(int i = 0; i < strlen(s); ++i) {
            if(s[i] >= 'a' && s[i] <= 'z')
                s2 += s[i];
            else if(s[i] >= 'A' && s[i] <= 'Z')
                s2 += s[i] + 'a' - 'A';
        }
    }
    cout<<s2;
    return 0;
}
A S D F G H J K L
123+@
a
^Z
asdfghjkla

考虑到连续输入,想结束时,只需先回车, 再(ctrl+Z), 再回车

(注意, ctrl+Z要位于行首)

四,破译密码

P1045 - 译密码 - New Online Judge (ecustacm.cn)

题目

  

思路

在草稿纸一试,发现w,x,y,z及对应大写,ASCII值-22即可;其他字母ASCII值+4即可

同时需要注意char数组和String类的输入,求长度的区别 

代码 

下面我展示两种代码

1

#include<iostream>
using namespace std;
int main()
{
    string s;
    while(cin>>s) {
        for(int i = 0; i < s.size(); ++i) {
            if((s[i]>='W'&&s[i]<='Z')||(s[i]>='w'&&s[i]<='z'))
                s[i] -= 22;
            else if((s[i]>='A'&&s[i]<='V')||(s[i]>='a'&&s[i]<='v'))
                s[i] += 4;
        }
        for(int i = 0; i < s.size(); ++i) cout<<s[i];
        cout<<endl;
    }
    return 0;
}

2

#include<iostream>
#include<cstring> //strlen()
using namespace std;
int main()
{
    char s[510];
    while(cin>>s) {
        for(int i = 0; i < strlen(s); ++i) {
            if((s[i]>='W'&&s[i]<='Z')||(s[i]>='w'&&s[i]<='z'))
                s[i] -= 22;
            else if((s[i]>='A'&&s[i]<='V')||(s[i]>='a'&&s[i]<='v'))
                s[i] += 4;
        }
        for(int i = 0; i < strlen(s); ++i) cout<<s[i];
        cout<<endl;
    }
    return 0;
}

五,反向数相加

P1046 - 反向数相加 - New Online Judge (ecustacm.cn) 

题目 

 

思路

1,嫌整型数组麻烦,直接对整型操作

2,看到题目第一时间想到,构造个函数起到f()的作用 

3,考虑到,两个10^9反转再相加会超出int范围,我们用long long长整型声明 

代码

 有个小坑,构造反向的函数rever()时,第一次我声明int rever(),虽然其他整型全声明为long long,依旧Accepted 77%,第二次改long long rever()才Ac

#include<iostream>
typedef long long LL;
using namespace std;
LL rever(LL x)
{
    LL y = 0;
    while(x) {
        y *= 10;
        y += x % 10;
        x /= 10;
    }
    return y;
}
int main()
{
    LL a, b, c;
    while(cin>>a>>b) {
        c = rever(rever(a) + rever(b));
        cout<<c<<endl;
    }
    return 0;
}

六,Excel表中的列号

P1047 - Excel表中的列号 - New Online Judge (ecustacm.cn)

题目

 

思路

经过草稿纸详细模拟,一个字母26种可能,2个字母26*26种,3个字母26*26*26种,相加后 ==18278,验证正确

代码 

#include<iostream>
#include<cstring> //strlen()
using namespace std;

int main()
{
    char s[4];
    while(cin>>s) {
        int ans = 0;
        for(int i = 0; i < strlen(s); i++) {
            ans *= 26;
            ans += s[i] - 'A' + 1;
        }
        cout<<ans<<endl; //answer
    }
    return 0;
}

七,饮料兑换

P1048 - 饮料兑换 - New Online Judge (ecustacm.cn) 

入门题但通过率只有14%,涉及到简单的贪心,很多新手确实做不出来 

题目

 

分析

1,注意10^18,必须用long long

2,ans(wer)声明在while(cin>>n>>k)里,否则会一直叠加

代码

#include<iostream>
using namespace std;
int main()
{
    long long n, k;
    while(cin>>n>>k) {
        long long ans = 0; //声明在里面
        ans += n;
        while(n) {
            if(n >= k) {
                ans += n / k;
                n = n / k + n % k;
            }
            else break;
        }
        cout<<ans<<endl;
    }
    return 0;
}

八,角谷猜想

P1049 - 角谷猜想 - New Online Judge (ecustacm.cn)

题目

 

代码

#include<iostream>
#include<cstdio> //printf()
using namespace std;
int main()
{
    int n, a;
    cin>>n;
    while(n != 1) {
        if(n % 2 == 1) {
            a = n;
            n = n * 3 + 1;
            printf("%d*3+1=%d\n", a, n);
        }
        else {
            a = n;
            n /= 2;
            printf("%d/2=%d\n", a, n);
        }
    }
    cout<<"End";
    return 0;
}

九,数字统计

P1050 - 数字统计 - New Online Judge (ecustacm.cn)

题目

代码

#include<iostream>
using namespace std;
int main()
{
    int L, R, x, ans = 0;
    cin>>L>>R>>x;
    for(int i = L; i <= R; ++i) {
        int j = i;
        while(j) {
            if(j % 10 == x) ans++;
            j /= 10;
        }
    }
    cout<<ans;
    return 0;
}

十,素数

P1051 - 素数 - New Online Judge (ecustacm.cn)

这也是一道通过率14%的题目 

题目

分析

1,直接从2遍历到n,可能会超限,易于发现遍历到平方根即可判断素数

2,注意flag的位置

3,换行不要漏

代码

#include<iostream>
using namespace std;
int main()
{
    int n;
    while(cin>>n) {
        int flag = 1;
        if(n == 1) cout<<"No"<<endl;
        else if(n == 2) cout<<"Yes"<<endl;
        else {
            for(int i = 2; i * i <= n; ++i)
                if(n % i == 0) {
                    cout<<"No"<<endl;
                    flag = 0;
                    break;
                }
            if(flag) cout<<"Yes"<<endl;
        }
    }
    return 0;
}

总结

经过10道题,我发现了

1,

过往的一点点比赛中,很多复杂点的题目,都是在入门题基础上演变来的,或者说有入门题的影子,因为入门题都没怎么做过以及比赛从未参加过,一开始就处于劣势,做不出来或者说做很久才Ac就不是没原因了

2, 

相对于学习从未接触过的算法来说,刷入门题真的很放松,不会有冥思苦想,绞尽脑汁记公式的时候,不会有苦苦思索一道经典算法的情况,所以劳逸结合吧,比如最近学的Floodfill算法水管工游戏,学一会就做点入门题放松下,不失为好办法 

3, 

刷入门题甚至只是回顾,不是没有效果的,比如你在个很简单的点上,卡了5分钟,这放在复杂点的大题里是致命的,一个大题里出现2~3个简单失误,意味着本来半小时能AC的题,足足花了一个小时才解决,甚至半途而废,所以,打牢基础

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

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

相关文章

小喵2022年的年度总结,啊滴妈呀,开了眼了。

宝子&#xff0c;你不点个赞吗&#xff1f;不评个论吗&#xff1f;不收个藏吗&#xff1f; 最后的最后&#xff0c;关注我&#xff0c;关注我&#xff0c;关注我&#xff0c;你会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的很重…

Qt扫盲- QUdpSocket 类理论总结

QUdpSocket 类理论总结一、概述二、使用流程三、QNetworkDatagram 简述一、概述 UDP (User Datagram Protocol)是一种轻量级的、不可靠的、面向数据报的、无连接的协议。当可靠性不重要时&#xff0c;可以使用它。QUdpSocket是QAbstractSocket的子类&#xff0c;允许发送和接收…

SpringBoot+Vue--token,vue导航守卫,axios拦截器-笔记3

自己学习记录,写的不详细,没有误导,不想误导 大概的登录逻辑,前后端完整实现: 1.用户名,密码验证成功后,后端签发token返回给前端 2.前端把token保存到本地存储 3.每次请求前,通过axios请求拦截器,统一发送token 4.通过Vue导航守卫,和axios响应拦截器,统一保护页面 新建个…

【华为上机真题 2023】事件推送

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

机制设计原理与应用(四)预算可行的拍卖机制

文章目录4 预算可行的拍卖机制4.1 特征4.2 使用案例4.3 拍卖设计问题4.4 单调次模函数&#xff08;Monotone Submodular Function&#xff09;4.4.1 分配算法4.4.2 关键支付计划4.4.3 特性4.5 在线预算可行的拍卖机制4.5.1 Secretary Problem(A Optimal Stopping Problem)4.5.2…

如何与他人交流-第5期

上期我们讲了打破预期,顺应主体这期我们来讲讲如何建立亲和关系(关系侧)我的别人交流,只有在不把别人当成对象(工具人),而是把对方当成主体的情况下(让别人感受到尊重),这是相互尊重的终极本质,也是唯一方法.把别人当人看.认同对方,对方也会认同你.自信从何而来自信本意为相信自…

信息论复习—连续信源、信道及容量

目录 连续信源的熵&#xff1a; 连续信源离散化后的概率空间&#xff1a; 连续信源离散化后的熵&#xff1a; 连续信源的绝对熵&#xff1a; 连续信源的相对熵&#xff1a; 连续信源的条件熵&#xff1a; 连续信源的相对条件熵&#xff1a; 连续信源相对熵的最大化&#…

李宏毅ML-卷积神经网络CNN

李宏毅ML-卷积神经网络CNN 文章目录李宏毅ML-卷积神经网络CNNImage ClassificationConvolutional Layer1. Neural Version StoryReceptive FieldParameter Sharing2. Filter Version StoryFilterParameter Sharing3. Summary of Two VersionsPooling LayerThe Whole CNNDrawbac…

Hyperbolic geometry (双曲几何简介)

ContentsManifolds: A Gentle IntroductionManifoldsTangent SpacesMetric TensorRiemannian Manifolds (黎曼流形)Hyperbolic Geometry and Poincar EmbeddingsCurvature (曲率)Euclidean and Non-Euclidean GeometriesHyperbolic SpaceMinkowski SpaceHyperboloid (双曲面)Th…

树和森林(快来瞧)

森林的定义 森林是由多颗互不相交的树所构成的树的集合&#xff0c;即森林包含多棵树&#xff0c;每一棵树都有自己的根结点。一棵树也可以看成森林。 树的表示及基本操作 1.树&#xff08;一般树&#xff09;的表示方法 1.1树的双亲表示法 树的双亲表示法是将树的各个节点…

现场工程师出手-PCAPHub与云SSH隧道稳妥实现异地LAN工业联测

在去年&#xff0c;因为众所周知的因素影响&#xff0c;项目的甲方主动提出延缓设备的交付。作为乙方&#xff0c;尽管项目延缓是甲方提出的&#xff0c;但依旧希望按期交付&#xff0c;这样才能回款&#xff0c;熬过一年。其实&#xff0c;2022年初&#xff0c;几类传感器、压…

S7-1200PLC与ABB机器人进行PROFINET通信的具体方法和步骤详解

S7-1200PLC与ABB机器人进行PROFINET通信的具体方法和步骤详解 1. TIA博途一侧的配置: 当我们安装好RobotStudio软件后,可以在以下的目录中C:\ProgramData\ABB Industrial IT\Robotics IT\DistributionPackages\ABB.RobotWare-6.08.0134\RobotPackages\RobotWare_RPK_6.08.013…

【JavaWeb】JavaScript基础语法(上)

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaWeb】 ✈️✈️本篇内容:JavaScript基础语法(上)&#xff01; &#x1f680;&#x1f680;代码托管平台github&#xff1a;JavaWeb代码存放仓库&#xff01…

ESP32设备驱动-TSL2561亮度传感器驱动

TSL2561亮度传感器驱动 1、TSL2561介绍 TSL2560 和 TSL2561 是第二代环境光传感器器件。每个都包含两个集成模数转换器 (ADC),用于集成来自两个光电二极管的电流。两个通道的整合同时发生。转换周期完成后,转换结果分别传送到通道 0 和通道 1 数据寄存器。传输是双缓冲的,…

【头歌】单链表的基本操作

单链表的基本操作第1关&#xff1a;单链表的插入操作任务描述本关任务&#xff1a;编写单链表的初始化、插入、遍历三个操作函数。相关知识链表是线性表的链式存储结构的别称&#xff0c;特点是以“指针”指示后继元素&#xff0c;因此线性表的元素可以存储在存储器中任意一组存…

Linux常用命令——speedtest-cli命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) speedtest-cli 命令行下测试服务器外网速度 补充说明 speedtest-cli是一个使用python编写的命令行脚本&#xff0c;通过调用speedtest.net测试上下行的接口来完成速度测试&#xff0c;最后我会测试运维生存时间…

YOLOV3 Pytorch版本代码解读

YOLOV3 Pytorch版本代码解读 代码与coco数据集关注wx公众号JokerTong回复yolov3即可获取 参考视频 YOLO系列算法 文章目录YOLOV3 Pytorch版本代码解读数据集准备与关键文件说明前提准备代码大致流程需要自行修改代码的部分项目代码解读一 数据与标签的读取二 模型构造convoluti…

数据库工具类的编写

package com.bjpowernode.jdbc.utils;import java.sql.*; import java.util.ResourceBundle;/*** 数据库工具类简化JDBC的代码编写。** 在同一个没有结束的程序中&#xff0c;DBUtil类只加载一次&#xff0c;加载一次以后&#xff0c;再次调用该类中的方法&#xff0c;本不会再…

基于Echarts构建大数据招聘岗位数据可视化大屏

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

SpringBoot 3.0.x使用SpringDoc

为什么使用SpringDoc 在Springfox3.0停更的两年里&#xff0c;SpringBoot进入3.0时代&#xff0c; SpringFox出现越来越多的问题&#xff0c;最为明显的就是解析器的问题&#xff0c;已经在上文 中解释清楚&#xff0c;这里就不再赘述。 SpringDoc是Spring官方推荐的API&#x…