第十四届蓝桥杯三月真题刷题训练——第 7 天

news/2024/11/9 0:51:28/

目录

第 1 题:三角回文数

问题描述

答案提交

运行限制

代码:

第 2 题:数数

问题描述

答案提交

运行限制

代码:

第 3 题:倍数问题_同余定理_分情况讨论

题目描述

输入描述

输出描述

输入输出样例

运行限制

代码:


第 1 题:三角回文数

问题描述

对于正整数 n, 如果存在正整数 k 使得 n=1+2+3+⋯+k=k(k+1)/2​, 则 n 称为三角数。例如, 66066 是一个三角数, 因为 66066=1+2+3+⋯+363 。

如果一个整数从左到右读出所有数位上的数字, 与从右到左读出所有数位 上的数字是一样的, 则称这个数为回文数。例如, 66066 是一个回文数, 8778 也是一个回文数。

如果一个整数 n 既是三角数又是回文数, 我们称它为三角回文数。例如 66066 是三角回文数。

请问, 第一个大于 20220514 的三角回文数是多少?

答案提交

这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

代码:

package 第十四届蓝桥杯三月真题刷题训练;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;/*** @author yx* @date 2023-03-10 8:28*/
public class day7 {static BufferedReader ins = new BufferedReader(new InputStreamReader(System.in));static StreamTokenizer in = new StreamTokenizer(ins);static PrintWriter out= new PrintWriter(System.out);public static void main(String[] args) {for (int i = 20220515 ; ; i++) {if(isHuiWen(i)&&isSanJ(i)){System.out.println(i);return;}}}static boolean isHuiWen(int n){char[] arr=(n+"").toCharArray();int l=0;int r=arr.length-1;while (l<=r){if(arr[l]!=arr[r]){return false;}l++;r--;}return true;}static boolean isSanJ(int n){
//        (k)*(k+1)=2n
//        直接取(k+1)*(k+1)=2n的k,能减少很多时间int k=(int) Math.sqrt(2*n)-1;while (k*(k+1)<=n*2){if(k*(k+1)==n*2){return true;}k++;}return false;}}

第 2 题:数数

问题描述

任何一个大于 1 的正整数都能被分解为若干个质数相乘, 比如 28=2×2×7 被分解为了三个质数相乘。请问在区间 [2333333, 23333333] 中有多少个正整数 可以被分解为 12 个质数相乘?

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 512M

代码:

package 第十四届蓝桥杯三月真题刷题训练.day7;import java.util.ArrayList;/*** @author yx* @date 2023-03-10 8:48*/
public class 数数 {public static void main(String[] args) {int ans=0;for (int i = 2333333; i <= 23333333 ; i++) {
//            System.out.println(i);if(check(i)){ans++;}}System.out.println(ans);}static boolean check(int n){int ans=0;//只需要到sqrt(n)即可,因为如果有一个因数大于等于sqrt(n)// 那么必定有一个因数小于等于sqrt(n)for (int i = 2; i*i <= n ; i++) {while (n%i==0){/*此时的i是从2开始的,n除掉的一定是质数,并且先从最小的质数开始除如果有非质数因子k,那么该数的因子一定存在小于sqrt(k)的最小因子数j这个j如果是质数,那么一定会在前面被当作除数除掉从而保证了每一个因子都是质数,非质数的会被分解成质数因子给除掉*/n/=i;//更新数据ans++;}}/*比如最后的n为5的时候,n%i!=0但是5也是这里面的一个质数所以这个质因子5不能漏掉*/if(n>1)ans++;if(ans==12){return true;}return false;}
}

第 3 题:倍数问题_同余定理_分情况讨论

题目描述

众所周知,小葱同学擅长计算,尤其擅长计算一个数是否是另外一个数的倍数。但小葱只擅长两个数的情况,当有很多个数之后就会比较苦恼。现在小葱给了你 n 个数,希望你从这 n 个数中找到三个数,使得这三个数的和是 K 的倍数,且这个和最大。数据保证一定有解。

输入描述

第一行包括 2 个正整数 n, K。

第二行 nn 个正整数,代表给定的 n 个数。

其中,1≤n ≤10^5, 1≤K ≤10^3,给定的 n 个数均不超过 10^8。

输出描述

输出一行一个整数代表所求的和。

输入输出样例

示例

输入

4 3
1 2 3 4

输出

9

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

代码:

解析全在代码注释里,详细到每一行代码!!!!

 package 第十四届蓝桥杯三月真题刷题训练.day7;import java.io.*;
import java.util.Arrays;
import java.util.Scanner;/*** @author yx* @date 2023-03-10 10:16*/
public class 倍数问题 {static PrintWriter out =new PrintWriter(System.out);static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));static StreamTokenizer in=new StreamTokenizer(ins);/*** 输入* in.nextToken()* int a= (int)in.nval;** 输出* out.print();* out.flush();*/public static void main(String[] args) throws IOException {Scanner scanner = new Scanner(System.in);int n=scanner.nextInt();int k=scanner.nextInt();int[][] nums=new int[k][3];for (int i = 0; i < n; i++) {//因为需要三个数字,因此只需要维护每个余数对应的前三大的数即可int temp=scanner.nextInt();int yuShu=temp%k;//一定要保证降序排序这样有利于我们取大的数,即nums[yuShu][0]>nums[yuShu][1]>nums[yuShu][2]if(temp>nums[yuShu][0]){//如果temp比nums[yuShu][0]还大,那么temp就是nums[yuShu][0]//原来的nums[yuShu][0]变成第二大,原来的nums[yuShu][1]变成第三大//原来的nums[yuShu][2]被舍弃nums[yuShu][2]=nums[yuShu][1];nums[yuShu][1]=nums[yuShu][0];nums[yuShu][0]=temp;}else if(temp>nums[yuShu][1]){//如果此时的temp不是最大的,但是比nums[yuShu][1]大//那么原来的nums[yuShu][0]还是最大的//temp变成第二大的,即temp=nums[yuShu][1]//原来的nums[yuShu][1]就变成第三大的了//原来的nums[yuShu][2]被舍弃nums[yuShu][2]=nums[yuShu][1];nums[yuShu][1]=temp;}else if(temp>nums[yuShu][2]){//此时的temp小于前两大的数,大于nums[yuShu][2]//那么temp就代替nums[yuShu][2]//原来的nums[yuShu][2]被淘汰nums[yuShu][2]=temp;}}int x1,x2,x3;int ans=0;for (int i = 0; i < k; i++) {//遍历余数x1=nums[i][0];if(nums[i][0]!=0){for (int j = i; j < k ; j++) {if(j==i){//若x1,x2余数相同都为i,则x2取余数i对应的第二大的数x2=nums[j][1];}else {//x1,x2余数不同的情况,x2取余数j对应的最大的数x2=nums[j][0];}if(x2!=0){//余数为j,对应的数字存在的情况,找第三个余数z对应的数字int z=(k-(i+j)%k)%k;//这个自己手写一些即可,不懂的地方评论区或私信问if(i!=j){//余数i和余数j不相同if(z==i){//x3和x1对应的余数相同,那么x3就取余数i对应的第二大的数x3=nums[i][1];}else if(z==j){//x3和x2对应的余数相同,那么x3就取余数j对应的第二大的数x3=nums[j][1];}else {//x3的余数既不等于i也不等于j的情况,那么x3就取余数z对应的最大的数x3=nums[z][0];}}else {//x1和x2余数相同的情况if(z==i){//x1和x2和x3余数相同的情况,x3取余数为i的第三大的数x3=nums[i][2];}else {//x3和x1和x2余数不同,那么x3取余数为z对应的最大的数字x3=nums[z][0];}}if(x3!=0){//余数为z且对应的数字存在的情况ans=Math.max(ans,(x1+x2+x3));}}}}}System.out.println(ans);}
}


http://www.ppmy.cn/news/31575.html

相关文章

【Linux】网络入门

&#x1f387;Linux&#xff1a; 博客主页&#xff1a;一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 看似不起波澜的日复一日&#xff0c;一定会在某一天让你看见坚持…

Android Crash和ANR监控

文章目录一、Crash1.1 概念1.2 类型二、ANR2.1 概念2.2 类型2.2.1 KeyDispatchTimeout&#xff08;常见&#xff09;2.2.2 BroadcastTimeout2.2.3 ServiceTimeout2.2.4 ContentProviderTimeout三、测试中如何关注3.1 Crash测试关注方法3.2 ANR测试关注方法四、如何记录与处理4.…

成功的项目管理策略:减少成本,提高质量

项目管理是一项具有挑战性的任务&#xff0c;项目团队需要合理的规划和策略&#xff0c;以确保项目的成功和达成预期。为了实现项目的成功&#xff0c;项目经理必须采用正确的策略&#xff0c;才能以最大限度地减少成本并提高项目质量。本文将探讨成功的项目管理策略&#xff0…

手把手教你实现书上的队列,进来试试?

一.队列的基本概念队列的定义队列&#xff08;queue&#xff09;是只允许在一端进行插入操作&#xff0c;而在另一端进行删除操作的线性表。队列是一种先进先出&#xff08;First In First Out&#xff09;的线性表&#xff0c;简称FIFO。允许插入的一端称为队尾&#xff0c;允…

软件测试的案例分析 - 闰年1

&#xff08;这是关于博客质量分的测试 https://www.csdn.net/qc) 我们谈了不少测试的名词, 软件是人写的, 测试计划和测试用例也是人写的, 人总会犯错误。错误发生之后, 总有人问: 为什么这个bug 没有测出来啊?! 我们看看一类简单的bug是如何发生的&#xff0c;以及如何预防…

C++中拷贝构造和赋值重载的注意事项以及编译器的优化处理

C中拷贝构造和赋值重载的注意事项以及编译器的优化处理前言1. 拷贝构造和赋值重载的易混淆点和注意事项1.1 易混淆点1.2 注意事项2.编译器对拷贝构造和赋值重载的优化处理前言 本文可以帮助你对下面&#xff1a; &#xff08;1&#xff09;何时调用拷贝构造何时调用赋值重载 &a…

【java】 java开发中 常遇到的各种难点 思路方案

文章目录逻辑删除如何建立唯一索引唯一索引失效问题加密字段模糊查询问题maven依赖冲突问题&#xff08;jar包版本冲突问题&#xff09;sql in条件查询时 将结果按照传入顺序排序作为一个开发人员 总会遇到各种难题 本文列举博主 遇见/想到 的例子 &#xff0c;也希望同学们可以…

Python每日一练(20230310)

目录 1. 爬楼梯 ★ 2. 删除无效的括号 ★★★ 3. 给表达式添加运算符 ★★★ &#x1f31f; 每日一练刷题专栏 C/C 每日一练 ​专栏 Python 每日一练 专栏 1. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方…