【蓝桥杯】第十三届蓝桥杯模拟赛 3 期java个人题解

1 篇文章 0 订阅
1 篇文章 0 订阅

1.问题描述

请问十六进制数 2021ABCD 对应的十进制是多少?
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

直接计算器:539,077,581
代码:
public class Main {
public static void main(String[] args) {
Long value = Long.valueOf(“2021ABCD”,16);
System.out.println(value);
}
}

2.问题描述

如果一个整数 M 同时是整数 A 和 B 的倍数,则称 M 是 A 和 B 的公倍数,公倍数中最小的一个正整数称为最小公倍数。
  例如:2021 和 86 的最小公倍数是 4042.
  请问在 1(含) 到 2021(含) 中,有多少个数与 2021 的最小公倍数是 4042。
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案:3

3.问题描述

10 是一个非常特殊的数,它可以表示成两个非负整数的平方和,10 = 3 * 3 + 1 * 1。
  9 也是同样特殊的数,它可以表示成 9 = 3 * 3 + 0 * 0。
  请问,在 1 到 2021 中有多少个这样的数?
  请注意,有的数有多种表示方法,例如 25 = 5 * 5 + 0 * 0 = 3 * 3 + 4 * 4,在算答案时只算一次。
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

枚举:1632

public class Main {
	    public static void main(String[] args){
	    int count=0;
	    for (int i = 0; i < 2021; i++) {
			for (int j = 0; j < 2021; j++) {
				for (int k = 0; k < 2021; k++) {
					if (j*j+k*k==i){
						count++;
						 //System.out.println(i+"="+j+"*"+j+"+"+k+"*"+k);
					}
				}
			}
		}
	    System.out.println(count);
	}
}

4.问题描述

下面是一个8个结点的无向图的邻接矩阵表示,其中第 i 行第 j 列表示结点 i 到结点 j 的边长度。当长度为 0 时表示不存在边。
  0 9 3 0 0 0 0 9
  9 0 8 1 4 0 0 0
  3 8 0 9 0 0 0 0
  0 1 9 0 3 0 0 5
  0 4 0 3 0 7 0 6
  0 0 0 0 7 0 5 2
  0 0 0 0 0 5 0 4
  9 0 0 5 6 2 4 0
  请问,这个图的最小生成树大小的多少?
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

5.问题描述

下面是一个2020的矩阵,矩阵中的每个数字是一个1到9之间的数字,请注意显示时去除了分隔符号。
  69859241839387868941
  17615876963131759284
  37347348326627483485
  53671256556167864743
  16121686927432329479
  13547413349962773447
  27979945929848824687
  53776983346838791379
  56493421365365717745
  21924379293872611382
  93919353216243561277
  54296144763969257788
  96233972513794732933
  81443494533129939975
  61171882988877593499
  61216868895721348522
  55485345959294726896
  32124963318242554922
  13593647191934272696
  56436895944919899246
  矩阵中一个子矩阵的值是指子矩阵中所有数值的和。
  请问,矩阵中值最大的一个5
5的子矩阵的值是多少?
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

6.问题描述

小蓝要写一个网页显示一些商品。
  商品总共有 t 个,按顺序由 1 到 t 编号,每页显示 a 个,请问第 p 页显示的最小和最大编号是多少?
输入格式
  输入一行包含三个整数 t、a、p,相邻整数之间用一个空格分隔。
输出格式
  输出一行包含两个整数,分别表示最小和最大编号。
样例输入
31 10 3
样例输出
21 30
样例输入
31 10 4
样例输出
31 31
评测用例规模与约定
  对于所有评测用例,1 <= t <= 1000,1 <= a <= 100,1 <= p。保证第 p 页至少显示一个商品

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc=new Scanner(System.in);
		int t=sc.nextInt();
		int a=sc.nextInt();
		int p=sc.nextInt();
//		int ys;
//		if (t%a==0) {
//			ys=t/a;
//		}else {
//			ys=(t/a)+1;
//		}
		int ys=t%a==0?t/a:(t/a)+1;  //三目运算符一步到位;
		int zx=(p-1)*a+1;
//		if (p==ys) {
//			System.out.println(zx+" "+t);
//		}
//		else {
//			System.out.println(zx+" "+a*p);
//		}
		System.out.println(p==ys?zx+" "+t:zx+" "+a*p);
	}
}

7.问题描述

有 n 个人要排列成一个 k 行 k 列的方阵,请问 k 最大是多少?
输入格式
  输入一行包含一个整数 n。
输出格式
  输出一行包含一个整数,表示答案。
样例输入
15
样例输出
3
样例输入
81
样例输出
9
评测用例规模与约定
  对于 50% 的评测用例,2 <= n <= 1000。
  对于所有评测用例,2 <= n <= 100000000。
JAVA
}

public class Main {
	    public static void main(String[] args){
	    Scanner sc=new Scanner(System.in);
	    int n=sc.nextInt();
	    for (int i = 0; i < n; i++) {
			if (i*i>n) {
				System.out.println(i-1);
				break;
			}
		}
	}
}

8.问题描述

给定一个正整数 n,请判断 n 的所有数位上的值是否从左到右是严格递增的。
  例如:1589 是严格递增的。
  再如:1336 不是严格递增的,中间有相同的 3。
  再如:1598 不是严格递增的。
输入格式
  输入一行包含一个整数 n。
输出格式
  如果是严格递增的,输出“YES”(全大写),否则输出“NO”(全大写)。
样例输入
1589
样例输出
YES
样例输入
1336
样例输出
NO
评测用例规模与约定
  对于所有评测用例,1 <= n <= 1000000000。
JAVA
}

思路:1、转换为数组之后循环判断。 2、把每个位数算出来判断。

public class Main {
	    public static void main(String[] args){
	    Scanner sc=new Scanner(System.in);
	    String n=sc.next();
	    int [] x=new int[n.length()];
	    String str ="";
	    for (int i = 0; i < x.length; i++) {
			x[i]=Integer.parseInt(String.valueOf(n.charAt(i)));//将输入的整数转化为数组
			}
	    for (int j = 0; j < x.length; j++) {
			if (x[j]<x[j+1])
			str="YES";
		else{ 
			str="NO";
			break;
		}
	}
		  System.out.println(str);
	}
}

9.问题描述

小蓝将自己的车停在路边,在同一天将车开走。给定停车时间和开走时间,请问小蓝停了多长时间?
输入格式
  输入两行,第一行包含停车时间,第二行包含开走时间。
  每个时间的格式为 HH:MM:SS,其中 HH 表示时,值为 0 到 23 的整数,如果小于 10 用 0 补齐两位;MM 和 SS 分别表示分和秒,值为 0 到 59 的整数,小于 10 时用 0 补齐两位。
输出格式
  输出总共停车的时间,格式为 HH:MM:SS。
样例输入
08:58:10
17:20:31
样例输出
08:22:21

先转换成秒,求得停车时间再通过API转换;

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc=new Scanner(System.in);
		String a=sc.next();
		String b=sc.next();
		String[]ks=a.split(":");
		String[]js=b.split(":");
		int s=Integer.parseInt(ks[0]);
		int f=Integer.parseInt(ks[1]);
		int m=Integer.parseInt(ks[2]);
		int ss=Integer.parseInt(js[0]);
		int ff=Integer.parseInt(js[1]);
		int mm=Integer.parseInt(js[2]);
		int begin=(s*60*60)+(f*60)+(m);
		int end=(ss*60*60)+(ff*60)+(mm);
		int time=end-begin;
		LocalDateTime t=LocalDateTime.ofEpochSecond(time, 0, ZoneOffset.UTC); //此API要jdk1.8才有,ZoneOffset.UTC选择地区为上海时间;
		DateTimeFormatter formatter=DateTimeFormatter.ofPattern("HH:mm:ss"); //转换格式,区分大小写HH:mm:ss;
		System.out.println(formatter.format(t));
	}
}

10.问题描述

n 个运动员参加一个由 m 项运动组成的运动会,要求每个运动员参加每个项目。
  每个运动员在每个项目都有一个成绩,成绩越大排名越靠前。每个项目,不同运功员的成绩不会相同,因此排名不会相同。(但是不同项目可能成绩会相同)
  每个项目的前 k 名分别获得 k 到 1 分,第 i 名获得 max(k+1-i, 0) 分。
  每个运动员的总分就是他在每个项目上获得的分数之和。
  请计算每个运动员的总分。
输入格式
  输入的第一行包含两个整数 n, m, k,用一个空格分隔。
  接下来 n 行,每行包含 m 个整数,第 i 行第 j 个整数表示第 i 个运动员在第 j 项比赛的成绩。
输出格式
  输出一行包含 n 个整数,依次表示每个运动员的总分,相邻的整数之间用一个空格分隔。
样例输入
3 5 2
5 3 1 5 12
2 4 2 34 1
8 6 3 2 2
样例输出
4 4 7
样例说明
  第 1 个运动员得分为:1+0+0+1+2=4
  第 2 个运动员得分为:0+1+1+2+0=4
  第 3 个运动员得分为:2+2+2+0+1=7
评测用例规模与约定
  对于 50% 的评测用例,2 <= n, m, k <= 20,0 <= 成绩 <= 1000。
  对于所有评测用例,2 <= n, m, k <= 100,0 <= 成绩 <= 10000。
JAVA
}

小剧场:人类的一切痛苦都源自于对自己无能的愤怒——王小波

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值