0
点赞
收藏
分享

微信扫一扫

蓝桥杯2021年java b组国赛真题

精进的医生 2022-02-18 阅读 113

试题A: 整数范围
本题总分:5 分
【问题描述】
  用8位二进制(一个字节)来表示一个非负整数,表示的最小值是0,则一般能表示的最大值是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

解析:
0000 0000 = 0
1111 1111  = 1+2+4+8+16+32+64+128=255
答案:255

试题B: 纯质数
本题总分:5 分
【问题描述】

如果一个正整数只有1和它本身两个约数,则称为一个质数(又称素数)。
  前几个质数是:2,3,5,7,11,13,17,19,23,29,31,37…。
  如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如:2,3,5,7,23,37都是纯质数,而11,13,17,19,29,31不是纯质数。当然1,4,35也不是纯质数。
  请问,在1到20210605中,有多少个纯质数?

import java.util.*;
public class Main{
	static boolean check(int x) {//判断十进制数位是不是符合要求
		while(x!=0) {
			if(x%10==1||x%10==4||x%10==6||x%10==8||x%10==9||x%10==0) return false;
			x/=10;
		}
		return true;
	}
	static boolean zhi(int x) {//判断是不是质数
		for(int i=2;i<x;i++) {
			if(x%i==0) return false;
		}
		return true;
	}
    public static void main(String[] args){
    	int res = 0;
    	for(int i=2;i<=20210605;i++) {
    		if(check(i)&&zhi(i)) {
    			res++;
    			System.out.println(i);
    		}
    	}
    	System.out.println(res);
    }
}
答案:1903

试题C: 完全日期
本题总分:10 分
【问题描述】

如果一个日期中年月日的各位数字之和是完全平方数,则称为一个完全日期。
  例如:2021年6月5日的各位数字之和为2 + 0 + 2 + 1 + 6 + 5 = 16,而16是一个完全平方数,它是4的平方。所以2021年6月5日是一个完全日期。
  例如:2021年6月23日的各位数字之和为2 + 0 + 2 + 1 + 6 + 2 + 3 = 16,是一个完全平方数。所以2021年6月23日也是一个完全日期。
  请问,从2001年1月1日到2021年12月31日中,一共有多少个完全日期?

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

import java.util.*;
public class Main{
	static int find(int x) {
		int res = 0;
		while(x!=0) {
			res += x%10;
			x /= 10;
		}
		return res;
	}
	static boolean check(int x) {
		int y = (int) Math.sqrt(x);
		if(y*y==x) return true;
		return false;
	}
    public static void main(String[] args){
    	int res = 0;
    	int a[] = new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
    	for(int i=2001;i<=2021;i++) {
    		for(int j=1;j<=12;j++) {
    			for(int k=1;k<=a[j];k++) {
    				int s = find(i)+find(j)+find(k);
    				if(check(s)) {
    					res++;
    				}
    			}
    		}
    	}
    	System.out.print(res);
    }
}
在额外考虑下从2001年1月1日到2021年12月31日中是闰年的2.29的情况,
发现都不满足
答案:977

试题D: 最小权值
本题总分:10 分
【问题描述】

对于一棵有根二叉树T,小蓝定义这棵树中结点的权值W(T)如下:空子树的权值为0。
如果一个结点v有左子树L,右子树R,分别有C(L)和C®个结点,则:
  W(v) = 1 + 2W(L) + 3W® +(C(L))2C®。
树的权值定义为树的根结点的权值。
小蓝想知道,对于一棵有2021个结点的二叉树,树的权值最小可能是多少?

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


试题E: 大写
时间限制: 1.0s  内存限制: 512.0MB  本题总分:15分
【问题描述】

给定一个只包含大写字母和小写字母的字符串,请将其中所有的小写字母转换成大写字母后将字符串输出。

【输入格式】
输入一行包含一个字符串
【输出格式】
输出转换成大写后的字符串。
【样例输入1】
LanQiao
【样例输出1】
LANQIAO
【评测用例规模与约定】
对于所有评测用例,字符串的长度不超过100。

import java.util.*;
public class Main{
    public static void main(String[] args){
    	Scanner sc = new Scanner(System.in);
    	String str = sc.next();
    	for(int i=0;i<str.length();i++) {
    		if(str.charAt(i)>='a'&&str.charAt(i)<='z') {
    			System.out.printf("%c",str.charAt(i)-32);
    		}else {
    			System.out.printf("%c",str.charAt(i));
    		}
    	}
    }
}

试题F: 123
时间限制: 5.0s   内存限制: 512.0MB   本题总分:15分
【问题描述】

小蓝发现了一个有趣的数列,这个数列的前几项如下:
    1, 1, 2, 1, 2, 3, 1, 2, 3, 4, …
  小蓝发现,这个数列前1项是整数1,接下来2项是整数1至2,接下来3项是整数1至3,接下来4项是整数1至4,依次类推。
  小蓝想知道,这个数列中,连续一段的和是多少。

【输入格式】
输入的第一行包含一个整数T,表示询问的个数。
接下来T行,每行包含一组询问,其中第i行包含两个整数li和ri,表示询问数列中第li个数到第ri个数的和。
【输出格式】
输出T行,每行包含一个整数表示对应询问的答案。
【样例输入】
3
1 1
1 3
5 8
【样例输出】
1
4
8
【评测用例规模与约定】
对于10%的评测用例,1<T ≤ 30,1 ≤li≤ri ≤100。
对于20%的评测用例,1≤T ≤100,1 ≤li≤ri≤1000。
对于40%的评测用例,1≤T ≤1000,1≤li≤ri≤10^6。
对于70%的评测用例,1<T ≤10000,1≤li≤ri≤10^9。
对于80%的评测用例,1≤T ≤1000,1 ≤li≤ri≤10^12。
对于90%的评测用例,1<T ≤10000,1 ≤li≤ri≤10^12。
对于所有评测用例,1≤T ≤100000,1≤li≤ri≤10^12。

暴力做法,得40%分数
import java.util.*;
public class Main{
    public static void main(String[] args){
    	Scanner sc = new Scanner(System.in);
    	int n = sc.nextInt();
    	long a[] = new long[100001000];
    	a[0] = 0;
    	long s[] = new long[100001000];
    	s[0] = 0;
    	int k = 1;
    	for(int i=1;i<=10000000;) {
    		for(int j=1;j<=k;j++) {
    			a[i] = j;
    			s[i] = s[i-1]+a[i];
    			i++;
    		}
    		k++;
    	}
    	for(int i=0;i<n;i++) {
    		int l = sc.nextInt();
    		int r = sc.nextInt();
    		System.out.println(s[r]-s[l-1]);
    	}
    }
}

试题G: 和与乘积
时间限制: 1.0s   内存限制: 512.0MB   本题总分:20分
【问题描述】

请添加图片描述
4
1 3 2 2
【样例输出】
6
【样例解释】
符合条件的区间为[1,1],[1,3],[2,2],[3,3],[3,4],[4,4]。
【评测用例规模与约定】
对于20%的评测用例,n,m ≤3000;
对于50%的评测用例,n,m ≤ 20000;
对于所有评测用例,1 ≤n,m ≤200000,1 ≤ a; ≤200000。


试题H: 巧克力
时间限制: 1.0s    内存限制: 512.0MB    本题总分:20分
【问题描述】

小蓝很喜欢吃巧克力,他每天都要吃一块巧克力。
  一天小蓝到超市想买一些巧克力。超市的货架上有很多种巧克力,每种巧克力有自己的价格、数量和剩余的保质期天数,小蓝只吃没过保质期的巧克力,
  请问小蓝最少花多少钱能买到让自己吃x天的巧克力。

【输入格式】
输入的第一行包含两个整数x,n,分别表示需要吃巧克力的天数和巧克力的种类数。接下来n行描述货架上的巧克力,其中第i行包含三个整数ai ,bi,ci ,表示第i种巧克力的单价为ai,保质期还剩bi 天(从现在开始的bi天可以吃),数量为ci 。
【输出格式】
输出一个整数表示小蓝的最小花费。
如果不存在让小蓝吃x天的购买方案,输出-1。
【样例输入】
10 3
1 6 5
2 7 3
3 10 10
【样例输出】
18
【样例说明】
一种最佳的方案是第1种买5块,第2种买2块,第3种买3块。
前5天吃第1种,第6、7天吃第2种,第8至10天吃第3种。
【评测用例规模与约定】
对于30%的评测用例,n,x ≤ 1000。
对于所有评测用例,1≤n,x ≤100000,1 ≤ai,bi,ci≤109。


举报

相关推荐

0 条评论