10道经典蓝桥杯真题剖析(含省赛、国赛)

您所在的位置:网站首页 蓝桥杯历年真题及答案javaB组 10道经典蓝桥杯真题剖析(含省赛、国赛)

10道经典蓝桥杯真题剖析(含省赛、国赛)

2023-08-07 18:03| 来源: 网络整理| 查看: 265

文章目录 前言🚀1.立方变自身(简单枚举)🚀2.加法变乘法(插乘枚举)🚀3.借教室(二分法)🚀4.最少砝码(Python)🚀5.货物摆放(C++)🚀6.门牌制作🚀7.成绩分析🚀8.数字三角形🚀9.世纪末的星期(经典日期API问题)🚀10.猜字母(字符处理问题)

前言 大家好,我是莫若心,为了帮助兄弟们更好准备蓝桥杯比赛,我特意选取了蓝桥往年真题中许多能体现出蓝桥经典题型的题目,有需要的兄弟们可以收藏一下,后续我会继续更新蓝桥真题题型专栏,和大家一起冲击蓝桥杯

附上蓝桥杯官网地址:蓝桥杯官网

在这里插入图片描述

🚀1.立方变自身(简单枚举)

🚩🚩 题目如下

观察下面的现象,某个数字的平方,按位累加仍然等于自身 1^3=1 8^3=512 5+1+2=8 17^3=4913 4+9+1+3=17 … 请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?

🚩🚩 答案如下

public class 立方自身 { public static void main(String[] args) { int count = 0; //其实到最多到100就可以了,也可以加大范围枚举,会发现答案不会变多 for (int i = 1; i count++; } } System.out.println(count);//6 } public static int sum(int x){//获得数x各个位相加的返回值 int count=0; while(x>0){ count+=x%10; x=x/10; } return count; } } 🚀2.加法变乘法(插乘枚举)

🚩🚩 题目如下 在这里插入图片描述 🚩🚩 答案如下

public class 加法变乘法 { public static void main(String[] args) { for (int i = 1; i int count = i * (i + 1) + j * (j + 1);//一定要记得加括号 for (int k = 1; k //判断k不是我们前面已经用来相乘的数 count += k; //将剩余的数加起来 } } if (count == 2015) { System.out.println(i);//得到10 16 } } } } } 🚀3.借教室(二分法)

🚩🚩 题目如下 在这里插入图片描述 🚩🚩 答案如下

思路: 首先是区间修改,这里用差分进行求解,通过二分进行缩小结果区间!!!

#include using namespace std; typedef long long int ll; const ll maxn=1e5+10; const ll maxm=1e8+10; const ll mod=1e9+7; int line[1000010], l[1000010], r[1000010], d[1000010], change[1000010],sum[1000010]; int n,m; int check(int x) { memset(change,0,sizeof(change)); for (int i = 1; i scanf("%d %d", &n, &m); for (int i = 1; i mid = (l + r) >> 1; if(!check(mid))//obj 5 r=mid; else l=mid+1; //cout if (x % i == 0) { int num = 0; while (x % i == 0) { x /= i; num++; } primeNum.push_back(num); primeVal.push_back(i); } } if (x > 1) { primeNum.push_back(1); primeVal.push_back(x); } for (unsigned int i = 0; i printf(" * "); } printf("\n(%lld ^ %lld)", primeVal[i], primeNum[i]); } printf("\n"); } int main() { CalaPrime(2021041820210418); long long int ans = 0; ans = 3 * 3 * 3 * 3 * 3; ans *= 10; printf("ans = %lld\n", ans); return 0; }

以下是JAVA 组赛题,我的笔记分享给大家:

🚀6.门牌制作

🚩🚩 题目如下 在这里插入图片描述

我的答案:624

🚩🚩 答案如下

public class Main1 { public static void main(String[] args) { int n = 2020, sum = 0; for (int i = 1; i int m = i % (k * 10) / k; if (m == 2) { sum ++; } } } System.out.println(sum); } } 🚀7.成绩分析

🚩🚩 题目如下 在这里插入图片描述 🚩🚩 答案如下

public class Main6 { static int n; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); int[] a = new int[n]; for (int i = 0; i int max = a[0], min = a[0]; double sum = 0.0; for (int i = 0; i private static int N, sum = 0, l = 0, r = 0; private static int[][] a, xy = {{1, 0}, {1, 1}}; private static int[] b; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); sc.nextLine(); a = new int[N][N]; b = new int[N]; for (int i = 0; i a[i][j] = Integer.parseInt(s[j]); } } f(0, 0, 0); System.out.println(sum); } static void f(int x, int y, int index) { if (index == N - 1) { if (Math.abs(l - r) int o = x + xy[i][0]; int p = y + xy[i][1]; if (o int sum1 = a[0][0]; for (int i = 0; i public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); for (int year = 1999; year //sunday是第一天,所以为1时是Sunday,通过源码查看 System.out.println(year);// 2299 break; } } } } 🚀10.猜字母(字符处理问题)

🚩🚩 题目如下

把abcd…s共19个字母组成的序列重复拼接106次,得到长度为2014的串。 接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字符。 得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。

🔑解析:首先这里我们用的是StringBuider,因为它的效率是最高的。这里我们才用字符串的一个好处是它自带的delete操作可以帮助我们删除元素,但正因如此也是我们容易掉坑的地方。当我们删除一个元素后,后续的元素会马上排上来,导致我们本该删除的元素的下标变化,导致了删掉了错误的元素。但其实也是有规律的,每删除一个元素后,后续所有待删除的元素都向左移动一格。比如有个字符串abcde,按照要求我们需要删掉ace这三个,a的下标为0删除后,原字符串变为bcde,这时本来下标为2的c变成了1,这时我们删掉c后再下一个待删除的元素e下标变为2了。于是本来需要隔一个再删除,却由于下标动态变化就只需要让i++而不是i+=2了。这里只需要考虑到长度为奇数时需要比偶数多删一次的问题即可,最后删剩的字符就是q。

🚩🚩 答案如下

public class 猜字母02 { public static void main(String[] args) { char[] a=new char[2014]; int index=0; for (int i = 0; i a[index++]= (char) ('a'+j);//这里涉及到ascii表的字母转换 } } //采用数组形式存放 int len=2014; while (len!=1){ int k=0; for (int i = 1; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3