蓝桥杯简单题整理

简介: 蓝桥杯简单题整理

题目描述


2020 年春节期间,有一个特殊的日期引起了大家的注意:2020年2月2日。因为如果将这个日期按“yyyymmdd” 的格式写成一个8 位数是20200202,

恰好是一个回文数。我们称这样的日期是回文日期。


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


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


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

【输入格式】

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

【输出格式】

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

一个ABABBABA 型的回文日期。

【样例输入】

20200202

【样例输出】

20211202

21211212

【评测用例规模与约定】

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


#include <iostream>
#include <string>
using namespace std;
int month[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
bool isLeap(int y) {undefined
    return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;
}
string pin(int y, int m, int d) {undefined
    string s, s1;
    s1 = to_string(y);
    s += s1;
    s1 = to_string(m);
    if (s1.size() == 1) {undefined
        s1 = "0" + s1;
    }
    s += s1;
    s1 = to_string(d);
    if (s1.size() == 1) {undefined
        s1 = "0" + s1;
    }
    s += s1;
    return s;
}
bool huiwen(int y,int m,int d) {undefined
    string s = pin(y, m, d);
    for (int i = 0; i < 4; i++) {undefined
        if (s[i] != s[7 - i])
            return false;
    }
    return true;
}
bool AB(int y, int m, int d) {undefined
    string s = pin(y, m, d);
    int A = s[0];
    int B = s[1];
    if (s[2] == A && s[3] == B && s[4] == B && s[5] == A && s[6] == B && s[7] == A) {undefined
        return true;
    }
    return false;
}
int main() {undefined
    int n;
    cin >> n;
    int y = n / 10000, m = n % 10000 / 100, d = n % 100;
    int f1 = 0, f2 = 0;
    while (true) {    
        d++;
        if (isLeap(y))
            month[2] = 29;
        else
            month[2] = 28;
        if (d > month[m]) {undefined
            m++;
            d = 1;
        }
        if (m > 12) {undefined
            y++;
            m = 1;
        }
        if (f1 == 0) {undefined
            if (huiwen(y, m, d)) {undefined
                string s = pin(y, m, d);
                int time = stoi(s);
                cout << time << endl;
                f1 = 1;
            }
        }
        if (f2 == 0) {undefined
            if (AB(y, m, d)) {undefined
                string s = pin(y, m, d);
                int time = stoi(s);
                cout << time << endl;
                f2 = 1;
            }
        }
        if (f1 && f2) {undefined
            break;
        }
    }
    return 0;
}

问题 C


时间限制: 1Sec 内存限制: 128MB 提交: 68 解决: 20


题目描述


对于一个字符串S,我们定义S 的分值 f(S) 为S中恰好出现一次的字符个数。例如f (”aba”) = 1,f (”abc”) = 3, f (”aaa”) = 0。

现在给定一个字符串S[0…n-1](长度为n),请你计算对于所有S的非空子串S[i…j](0 ≤ i ≤ j < n), f (S[i… j]) 的和是多少。


输入


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


输出


输出一个整数表示答案。


样例输入


ababc


样例输出


21


提示


样例说明:


子串f值:


a     1

ab    2

aba   1

abab  0

ababc 1

b    1

ba   2

bab  1

babc 2

 a   1

 ab  2

 abc 3

  b  1

  bc 2

   c 1


对于20% 的评测用例,1 ≤ n ≤ 10;

对于40% 的评测用例,1 ≤ n ≤ 100;

对于50% 的评测用例,1 ≤ n ≤ 1000;

对于60% 的评测用例,1 ≤ n ≤ 10000;

对于所有评测用例,1 ≤ n ≤ 100000。


6a77ddb71383453bad6cd102812f365f.png


在平面上有一些二维的点阵。


这些点的编号就像二维数组的编号一样,从上到下依次为第 1 至第  行,从左到右依次为第 1 至第  列,每一个点可以用行号和列号来表示。


现在有个人站在第 1 行第 1 列,要走到第  行第  列。


只能向右或者向下走。


注意,如果行号和列数都是偶数,不能走入这一格中。


问有多少种方案。


输入


输入一行包含两个整数  。


输出


输出一个整数,表示答案。


样例输入


3 4


样例输出


2


提示

deba64f68b2b42e48958477f54201979.png


给定一个长度为  的序列  。


你可以从中选出两个数  ,然后将  一前一后拼成一个新的整数。


例如 12 和 345 可以拼成 12345 或 34512 。


注意交换  的顺序总是被视为 2 种拼法,即便是  。


给定一整数  ,问有多少种拼法满足拼出的整数是  的倍数。


输入


第一行包含 2 个整数  和  。

第二行包含  个整数  。


输出


一个整数代表答案。


样例输入


4 2

1 2 3 4


样例输出


6


小明发明了一种给由全大写字母组成的字符串编码的方法。对于每一个大写字母,小明将它转换成它在 26 个英文字母中序号,即 A → 1, B → 2, … Z →26。


这样一个字符串就能被转化成一个数字序列:比如 ABCXYZ → 123242526。


现在给定一个转换后的数字序列,小明想还原出原本的字符串。当然这样的还原有可能存在多个符合条件的字符串。小明希望找出其中字典序最大的字符串。


输入


一个数字序列。


输出


一个只包含大写字母的字符串,代表答案


样例输入


123242526


样例输出


LCXYZ


提示


对于 20% 的评测用例,输入的长度不超过 20。


对于所有评测用例,输入的长度不超过 200000。


给定一个长度为  的数组  。你可以从中选出两个数  ,然后将  和  一前一后拼成一个新的整数。例如 12 和 345 可以拼成 12345 或 34512 。注意交换  和  的顺序被视为 2 种拼法,即便是  。


请你计算有多少种拼法满足拼出的整数小于等于  。


输入


第一行包含 2 个整数  和  。 第二行包含  个整数  。


输出


一个整数代表答案。


样例输入


4 33

1 2 3 4


样例输出


8


e1d77df46436426da748d8a038d61314.png


题目描述


小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。

现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这个字母出现的次数。


输入


输入一行包含一个单词,单词只由小写英文字母组成。


输出


输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪个。如果有多个字母出现的次数相等,输出字典序最小的那个。

第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。


样例输入


lanqiao


样例输出


a

2


提示


对于所有的评测用例,输入的单词长度不超过 1000。



上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。

路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。


输入


输入的第一行包含一个整数N(1<N≤100),表示三角形的行数。下面的 N行给出数字三角形。数字三角形上的数都是 0至 100之间的整数。


输出


输出一个整数,表示答案。


样例输入


5

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

样例输出


27


提示

73f7537556bf495a8e3118e00cfa14e4.png


题目描述


对于一个字符串S,我们定义S 的分值 f(S) 为S中恰好出现一次的字符个数。例如f (”aba”) = 2,f (”abc”) = 3, f (”aaa”) = 1。

现在给定一个字符串S[0…n-1](长度为n),请你计算对于所有S的非空子串S[i…j](0 ≤ i ≤ j < n), f (S[i… j]) 的和是多少。


输入


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


输出


输出一个整数表示答案。


样例输入


ababc


样例输出


28


提示


子串  f值

a     1

ab    2

aba   2

abab  2

ababc 3

b    1

ba   2

bab  2

babc 3

 a   1

 ab  2

 abc 3

  b  1

  bc 2

   c 1


给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下、从左到右的顺序依次是 A1, A2, · · · AN,如下图所示:


d62b0059dcebbd3560dc79c47a04c3cf.png



现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点 权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。


注:根的深度是 1。


输入


第一行包含一个整数 N。 第二行包含N个整数A1,A2,··· AN。


对于所有评测用例,1≤ N ≤100000,−100000≤ Ai ≤100000。


输出


输出一个整数代表答案。


样例输入


7

1 6 5 4 3 2 1


样例输出


2


题目描述


“饱了么”外卖系统中维护着 N 家外卖店,编号 1 ∼ N。每家外卖店都有 一个优先级,初始时 (0 时刻) 优先级都为 0。


每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减 到 0;而如果外卖店有订单,则优先级不减反加,每有一单优先级加 2。


如果某家外卖店某时刻优先级大于 5,则会被系统加入优先缓存中;如果 优先级小于等于 3,则会被清除出优先缓存。


给定 T 时刻以内的 M 条订单信息,请你计算 T 时刻时有多少外卖店在优 先缓存中。


输入


第一行包含 3 个整数 N、M 和 T。

以下 M 行每行包含两个整数 ts 和 id,表示 ts 时刻编号 id 的外卖店收到一个订单。


对于 80% 的评测用例,1 ≤ N, M, T ≤ 10000。 对于所有评测用例,1 ≤ N,M,T ≤ 100000,1 ≤ ts ≤ T,1 ≤ id ≤ N。


输出


输出一个整数代表答案。


样例输入


2 6 6

1 1

5 2

3 1

6 2

2 1

6 2


样例输出


1

提示



问题 C


时间限制: 1Sec 内存限制: 128MB 提交: 68 解决: 11


题目描述


给定一个长度为 N 的数组 A = [A1, A2, · · · AN ],数组中有可能有重复出现 的整数。


现在小明要按以下方法将其修改为没有重复整数的数组。小明会依次修改 A2,A3,··· ,AN。


当修改 Ai 时,小明会检查 Ai 是否在 A1 ∼ Ai−1 中出现过。如果出现过,则 小明会给 Ai 加上 1 ;如果新的 Ai 仍在之前出现过,小明会持续给 Ai 加 1 ,直 到 Ai 没有在 A1 ∼ Ai−1 中出现过。


当 AN 也经过上述修改之后,显然 A 数组中就没有重复的整数了。 现在给定初始的 A 数组,请你计算出最终的 A 数组


输入


第一行包含一个整数 N。 第二行包含N个整数A1,A2,··· ,AN


对于 80% 的评测用例,1 ≤ N ≤ 10000。


对于所有评测用例,1 ≤ N ≤ 100000,1 ≤ Ai ≤ 1000000。


输出


输出N个整数,依次是最终的A1,A2,··· ,AN。


样例输入


5

2 1 1 3 4


样例输出


2 1 3 4 5


题目描述


小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。


请问,在 1 到 n 中,所有这样的数的和是多少?


输入


输入一行包含两个整数 n。


(对于 20% 的评测用例,1 ≤ n ≤ 10。

对于 50% 的评测用例,1 ≤ n ≤ 100。

对于 80% 的评测用例,1 ≤ n ≤ 1000。

对于所有评测用例,1 ≤ n ≤ 10000。)


输出


输出一行,包含一个整数,表示满足条件的数的和


样例输入


40


样例输出


574


题目描述


数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数。


现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有 几项?


输入


输入的第一行包含一个整数 N。 第二行包含N个整数A1,A2,···,AN。(注意A1 ∼AN并不一定是按等差数


列中的顺序给出)


(对于所有评测用例,2≤ N ≤100000,0≤ Ai ≤109。)


输出


输出一个整数表示答案


样例输入


5

2 6 4 10 20


样例输出


10


题目描述


给定 N 个加号、M 个减号以及 N + M + 1 个整数 A1, A2, · · · , AN+M+1,小 明想知道在所有由这 N 个加号、M 个减号以及 N + M + 1 个整数凑出的合法的 后缀表达式中,结果最大的是哪一个?


请你输出这个最大的结果。

例如使用1 2 3 + -,则 “2 3 + 1 -” 这个后缀表达式结果是 4,是最大的。


输入


第一行包含两个整数 N 和 M。

第二行包含 N + M + 1 个整数 A1, A2, · · · , AN+M+1。


(对于所有评测用例,0≤ N,M ≤100000,−109 ≤ Ai ≤109。)


输出


输出一个数,表示答案


样例输入


1 1

1 2 3


样例输出


4


相关文章
|
6月前
|
容器
《剑指offer》——刷题日记
《剑指offer》——刷题日记
|
6月前
|
搜索推荐
蓝桥杯-基础练习 数列排序
蓝桥杯-基础练习 数列排序
60 0
|
6月前
|
测试技术
蓝桥杯(基础题)
蓝桥杯(基础题)
39 1
|
6月前
|
存储 网络协议 测试技术
复习软考之精读真题题解,猜猜这是哪年的真题吧
复习软考之精读真题题解,猜猜这是哪年的真题吧
32 0
|
Python
蓝桥杯刷题记录-2020省赛
比较全面的记录2020省赛题目,本篇文章全文都是采用Python解题,题目都是基础简单的题目
53 0
大学物理B2 知识点整理
大学物理B2 知识点整理
84 0
大学物理B2 知识点整理
|
机器学习/深度学习 人工智能 JSON
CSDN 算法技能树 蓝桥杯-基础 刷题+思考总结
一根高筋拉面,中间切一刀,可以得到2根面条。 如果先对折1次,中间切一刀,可以得到3根面条。 如果连续对折2次,中间切一刀,可以得到5根面条。 那么,连续对折10次,中间切一刀,会得到多少面条呢?
110 0