
本篇博客旨在记录自已打卡蓝桥杯3月份刷题集训,同时会有自己的思路及代码解答希望可以给小伙伴一些帮助。本人也是算法小白,水平有限,如果文章中有什么错误之处,希望小伙伴们可以在评论区指出来,共勉💪。
文章目录
题目:小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
输入格式:
输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。
输出格式:
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
输入输出样例:
示例 1
输入
lanqiao
输出
a
2
示例 2
输入
longlonglongistoolong
输出
o
6
运行限制:
解题代码:
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int[] arr = new int[26];
for (int i = 0; i < str.length(); i++) {
arr[str.charAt(i) - 'a']++;
}
int max = 0;
char ch = 'a';
for (int i = arr.length - 1; i >= 0; i--) {
if (arr[i] >= max) {
max = arr[i];
ch = (char)(i + 'a');
}
}
System.out.println(ch);
System.out.println(max);
}
}
题目:
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝要为一条街的住户制作门牌号。
这条街一共有 20202020 位住户,门牌号从 11 到 20202020 编号。
小蓝制作门牌的方法是先制作 00 到 99 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、71、0、1、7,即需要 11 个字符 00,22 个字符 11,11 个字符 77。
请问要制作所有的 11 到 20202020 号门牌,总共需要多少个字符 22?
运行限制:
解题代码:
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
int count = 0;
for(int i = 1; i <= 2020; i++) {
int num = i;
while(num != 0) {
if(num%10==2) {
count ++;
}
num /= 10;
}
}
System.out.println(count);
}
}
题目:有形如:ax3 + bx2 + cx + d = 0 这样的一个一元三次方程。给出该方程中各项的系数(a*,b,c,*d 均为实数),并约定该方程存在三个不同实根(根的范围在 −100 至 100 之间),且根与根之差的绝对值 ≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 2 位。
提示:记方程 f*(x)=0,若存在 2 个数 x1 和 x2,且x1<x2,f(x1) × f(x2) < 0,则在 (x1,x2)之间一定有一个根。
输入格式:
输入一行,4 个实数 a,b,c,d。
输出格式:
输出一行,3 个实根,从小到大输出,并精确到小数点后 2 位。
输入输出样例:
输入
1 -5 -4 20
输出
-2.00 2.00 5.00
运行限制:
解题代码:
import java.util.Scanner;
/**
* @author QIA
* @create 2023-03-26-21:48
*/
public class Main {
public static void main(String[] args) {
// 暴力枚举
Scanner rd = new Scanner(System.in);
double a = rd.nextDouble();
double b = rd.nextDouble();
double c = rd.nextDouble();
double d = rd.nextDouble();
for (double i = -100; i <= 100; i += 0.01)
if (Math.abs(a * i * i * i + b * i * i + c * i + d) < 0.000001)
System.out.printf("%.2f ", i);
}
}
题目:给定一个单词,请问在单词中删除 t 个字母后,能得到的字典序最小的单词是什么?
输入格式:
输入的第一行包含一个单词,由大写英文字母组成。
第二行包含一个正整数 t。
其中,单词长度不超过 100,t 小于单词长度。
输出格式:
输出一个单词,表示答案。
输入输出样例:
输入
LANQIAO
3
输出
AIAO
运行限制:
解题代码:
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 接收字符串
String s = sc.nextLine();
// 删除字符长度
int size = sc.nextInt();
// 将接收的字符串转换为整型数组
int[] ch = new int[s.length()];
// 用于存储删除后的元素数组
int[] arr = new int[s.length() - size];
int count = 0;
int a = 0, flag = a;
for (int i = 0; i < s.length(); i++) {
ch[i] = s.charAt(i) - 'A';
}
while (size > 0) {
flag = a;
for (int i = a; i <= flag + size; i++) {
if (ch[a] > ch[i]) {
a = i;
}
}
size -= (a-flag);
arr[count++] = ch[a];
a++;
}
for (int i = a; i < ch.length; i++) {
arr[count++] = ch[i];
}
// 遍历并输出,不用换行
for (int j : arr) {
System.out.print((char) (j + 'A'));
}
sc.close();
}
}
题目:如果一个序列的奇数项都比前一项大,偶数项都比前一项小,则称为一个摆动序列。即 a2i< a2i−1,a2i+1 > a2i。
小明想知道,长度为 m,每个数都是 1 到 n 之间的正整数的摆动序列一共有多少个。
输入格式:
输入一行包含两个整数 m,n (1≤n,m≤1000)。
输出格式:
输出一个整数,表示答案。答案可能很大,请输出答案除以 10000 的余数。
输入输出样例:
输入
3 4
输出
14
运行限制:
解题代码:
import java.util.Scanner;
/**
* 动态规划 2020 模拟赛
* 摆动序列
* @author QIA
* @create 2023-03-27-9:20
*/
public class Main {
static int[][] dp = new int[1004][1004];
public static int isList(int m, int n) {
int sum;
for (int i = 1; i <= n; i++) {
dp[1][i] = n - i + 1;
}
for (int i = 2; i <= m; i++) {
if (i % 2 != 0) {
for (int j = n; j >= 1; j--) {
dp[i][j] = (dp[i-1][j-1] + dp[i][j+1]) % 10000;
}
}else {
for (int j = 1; j <= n; j++) {
dp[i][j] = (dp[i-1][j+1] + dp[i][j-1]) % 10000;
}
}
}
if (m%2 != 0){
sum = dp[m][1];
}else {
sum = dp[m][n];
}
return sum;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
System.out.println(isList(m, n));
sc.close();
}
}
题目:X 国的一段古城墙的顶端可以看成 2×N 个格子组成的矩形(如下图所示),现需要把这些格子刷上保护漆。

你可以从任意一个格子刷起,刷完一格,可以移动到和它相邻的格子(对角相邻也算数),但不能移动到较远的格子(因为油漆未干不能踩!)
比如:a d b c e f 就是合格的刷漆顺序。c e f d a b 是另一种合适的方案。
当已知 N 时,求总的方案数。当 N 较大时,结果会迅速增大,请把结果对 109+7 取模。
输入格式:
输入数据为一个正整数(不大于 1000)。
输出格式:
输出数据为一个正整数。
输入输出样例:
输入
2
输出
24
运行限制:
解题代码:
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
static long mod = 1000000007;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
long[] a = new long[n + 1];
long[] b = new long[n + 1];
long sum;
a[1] = 1; a[2] = 6;b[1] = 1;
for (int i = 2; i <= n; i++) {
b[i] = 2 * b[i-1] % mod;
}
for (int i = 3; i <= n; i++) {
a[i] = (2*a[i-1] + b[i]+4*a[i-2])%mod;
}
sum = (4 * a[n]) % mod;
for (int i = 2; i < n; i++) {
sum += ((2*2*a[n-i]*2*b[i-1])%mod + (2*2*a[i-1]*2*b[n-i]%mod)) % mod; // 这里记得都要取余
sum %= mod;
}
System.out.println(sum);
}
}
有帮助的话,希望可以点赞❤️+收藏⭐,谢谢各位大佬~~🙌🙌🙌
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
我需要formtastic来仅显示月份和年份字段,而不显示日期字段。日期选择器很好,但它显示了整个日历。我不想要日期选择器。f.input:accounting_month,:label=>"会计月份",:as=>:datepicker我只需要月份和年份。 最佳答案 有一种方法可以做到这一点:"Accountingmonth",:order=>[:month,:year]这将自动隐藏“天”输入并为其指定默认值1。 关于ruby-on-rails-Rails3Formtastic。如何让f
我试图在Ubuntu14.04中使用Curl安装RVM。我运行了以下命令:\curl-sSLhttps://get.rvm.io|bash-sstable出现如下错误:curl:(7)Failedtoconnecttoget.rvm.ioport80:Networkisunreachable非常感谢解决此问题的任何帮助。谢谢 最佳答案 在执行curl之前尝试这个:echoipv4>>~/.curlrc 关于ruby-在Ubuntu14.04中使用Curl安装RVM时出错,我们在Stack
我有一个任务列表(名称、starts_at),我试图在每日View中显示它们(就像iCal)。deftodays_tasks(day)Task.find(:all,:conditions=>["starts_atbetween?and?",day.beginning,day.ending]end我不知道如何将Time.now(例如“2009-04-1210:00:00”)动态转换为一天的开始(和结束),以便进行比较。 最佳答案 deftodays_tasks(now=Time.now)Task.find(:all,:conditio
安装Rails时,一切都很好,但后来,我写道:rails-v和输出:/home/toshiba/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in`require':cannotloadsuchfile--rails/cli(LoadError)from/home/toshiba/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in`r
目录前言: 一、ASC分析代码实现二、 卡片分析代码实现三、 直线分析代码实现四、货物摆放分析代码实现小结:前言: 在刷题的过程中,发现蓝桥杯的题目和力扣的差别很大。让人有一种不一样的感觉,蓝桥杯题目偏向对于实际问题用编程去的解决,而力扣给人感觉很锻炼自己的编程思维,逻辑能力。两者结合去刷,相信会有不一样的收获。 一、ASC 已知大写字母A的ASCII码为65,请问大写字母L的ASCII码是多少?分析 这道题目看上去很简单,我们需确定自己计算的准确,所以我建议用编程去解决。代码实现publicclassTest8{publicstaticvoidmain(String[]args){Sy
什么是0day漏洞?0day漏洞,是指已经被发现,但是还未被公开,同时官方还没有相关补丁的漏洞;通俗的讲,就是除了黑客,没人知道他的存在,其往往具有很大的突发性、破坏性、致命性。0day漏洞之所以称为0day,正是因为其补丁永远晚于攻击。所以攻击者利用0day漏洞攻击的成功率极高,往往可以达到目的并全身而退,而防守方却一无所知,只有在漏洞公布之后,才后知后觉,却为时已晚。“后知后觉、反应迟钝”就是当前安全防护面对0day攻击的真实写照!为了方便大家理解,中科三方为大家梳理当前安全防护模式下,一个漏洞从发现到解决的三个时间节点:T0:此时漏洞即0day漏洞,是已经被发现,还未被公开,官方还没有相
提供3种Ubuntu系统安装微信的方法,在Ubuntu20.04上验证都ok。1.WineHQ7.0安装微信:ubuntu20.04安装最新版微信--可以支持微信最新版,但是适配的不是特别好;比如WeChartOCR.exe报错。2.原生微信安装:linux系统下的微信安装(ubuntu20.04)--微信适配的最好,反应最快,但是微信版本只到2.1.1,版本太老,很多功能都没有。3.深度deepin-wine6安装微信:ubuntu20.04+系统deepin-wine6安装新版微信--综合比较好,当前个人使用此种方法1个月,微信版本3.4;没什么大问题,尚可。一、WineHQ7.0安装微信
这个问题在这里已经有了答案:Unabletoinstallgem-Failedtobuildgemnativeextension-cannotloadsuchfile--mkmf(LoadError)(17个答案)关闭9年前。嘿,我正在尝试在一台新的ubuntu机器上安装rails。我安装了ruby和rvm,但出现“无法构建gemnative扩展”错误。这是什么意思?$sudogeminstallrails-v3.2.9(没有sudo表示我没有权限)然后它会输出很多“获取”命令,最终会出现这个错误:Buildingnativeextensions.Thiscouldtakeawhi
ruby1.9.3dev(2011-09-23修订版33323)[i686-linux]轨道3.0.20最近为什么在与DateTimeonRails相关的RSpecs项目上工作我发现在给定日期以下语句发出的值date.end_of_day.to_datetime和date.to_datetime.end_of_day虽然它们表示相同的日期时间,但比较时返回false。为了确认这一点,我打开了Rails控制台并尝试了以下操作1.9.3dev:053>monday=Time.now.monday=>2013-02-2500:00:00+05301.9.3dev:054>monday.cla