• 第十一届软件类校内模拟赛本科组Java软件开发


    第十一届软件类校内模拟赛本科组Java软件开发

    昨晚参加了蓝桥杯校内模拟赛,大一由于种种原因没参加,大二想试试,发现题目还可以,前面填空很简单,后面的程序设计一个比一个难,后两个想了好久,因为上学期的数据结构学的不够扎实= =,就没做出来:(,不说了,去补数据结构了~;答案并不是标准答案,也许你有更好的解决办法,可以和我一起探讨,对了,这个题的难度应该远比省赛简单。

    两个二进制数11110011101和1111101001的和是多少?请用二进制表示,注意在提交的时候不要提交前导0。

    101110000110

    在计算机存储中,12.5MB是多少字节?

    13107200

    一棵包含有2019个结点的树,最多包含多少个叶结点?

    2018

    由1对括号,可以组成一种合法括号序列:()。由2对括号,可以组成两种合法括号序列:()()、(())。由4对括号组成的合法括号序列一共有多少种?

    14

    问题描述

    ​ 给定三个整数 a, b, c,如果一个整数既不是 a 的整数倍也不是 b 的整数倍还不是 c 的整数倍,则这个数称为反倍数。

    ​ 请问在 1 至 n 中有多少个反倍数。

    输入格式

    ​ 输入的第一行包含一个整数 n。

    ​ 第二行包含三个整数 a, b, c,相邻两个数之间用一个空格分隔。

    输出格式

    ​ 输出一行包含一个整数,表示答案。

    样例输入

    ​ 30

    ​ 2 3 6

    样例输出

    ​ 10

    样例说明

    ​ 以下这些数满足要求:1, 5, 7, 11, 13, 17, 19, 23, 25, 29。

    评测用例规模与约定

    ​ 对于 40% 的评测用例,1 <= n <= 10000。

    ​ 对于 80% 的评测用例,1 <= n <= 100000。

    ​ 对于所有评测用例,1 <= n <= 1000000,1 <= a <= n,1 <= b <= n,1 <= c <= n。

    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner scn = new Scanner(System.in);
    		int n = scn.nextInt();
    		if (n < 1 || n > 1000000) {
    			return;
    		}
    		int a = scn.nextInt();
    		if (a < 1 || a > n) {
    			return;
    		}
    		int b = scn.nextInt();
    		if (b < 1 || b > n) {
    			return;
    		}
    		int c = scn.nextInt();
    		if (c < 1 || c > n) {
    			return;
    		}
    		int sum = 0;
    		for (int i = 1; i <= n; i++) {
    			if (i % a != 0 && i % b != 0 && i % c != 0) {
    				sum++;
    			}
    		}
    		System.out.println(sum);
    	}
    }
    

    问题描述

    ​ 小明非常不喜欢数字 2,包括那些数位上包含数字 2 的数。如果一个数的数位不包含数字 2,小明将它称为洁净数。

    ​ 请问在整数 1 至 n 中,洁净数有多少个?

    输入格式

    ​ 输入的第一行包含一个整数 n。

    输出格式

    ​ 输出一行包含一个整数,表示答案。

    样例输入

    ​ 30

    样例输出

    ​ 18

    评测用例规模与约定

    ​ 对于 40% 的评测用例,1 <= n <= 10000。

    ​ 对于 80% 的评测用例,1 <= n <= 100000。

    ​ 对于所有评测用例,1 <= n <= 1000000。

    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner scn = new Scanner(System.in);
    		int n = scn.nextInt();
    		if (n < 1 || n > 1000000) {
    			return;
    		}
    		int sum = 0;
    		for (int i = 1; i <= n; i++) {
    			String s = String.valueOf(i);
    			for (int j = 0; j < s.length(); j++) {
    				int t = Integer.valueOf(String.valueOf(s.charAt(j)));
    				if (t == 2) {
    					break;
    				}
    				if (j == s.length() - 1) {
    					sum++;
    				}
    			}
    		}
    		System.out.println(sum);
    	}
    }
    

    问题描述

    ​ 在数列 a[1], a[2], …, a[n] 中,如果对于下标 i, j, k 满足 0<i<j<k<n+1 且 a[i]<a[j]<a[k],则称 a[i], a[j], a[k] 为一组递增三元组,a[j]为递增三元组的中心。

    ​ 给定一个数列,请问数列中有多少个元素可能是递增三元组的中心。

    输入格式

    ​ 输入的第一行包含一个整数 n。

    ​ 第二行包含 n 个整数 a[1], a[2], …, a[n],相邻的整数间用空格分隔,表示给定的数列。

    输出格式

    ​ 输出一行包含一个整数,表示答案。

    样例输入

    ​ 5

    ​ 1 2 5 3 5

    样例输出

    ​ 2

    样例说明

    ​ a[2] 和 a[4] 可能是三元组的中心。

    评测用例规模与约定

    ​ 对于 50% 的评测用例,2 <= n <= 100,0 <= 数列中的数 <= 1000。

    ​ 对于所有评测用例,2 <= n <= 1000,0 <= 数列中的数 <= 10000。

    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner scn = new Scanner(System.in);
    		int n = scn.nextInt();
    		if (n < 2 || n > 1000) {
    			return;
    		}
    		int[] a = new int[n + 1];
    		for (int i = 1; i <= n; i++) {
    			a[i] = scn.nextInt();
    			if (a[i] < 0 || a[i] > 10000) {
    				return;
    			}
    		}
    		int ans = 0;
    		for (int i = 1; i < n + 1; i++) {
    			for (int j = i + 1; j < n + 1; j++) {
    				for (int k = j + 1; k < n + 1; k++) {
    					if (a[i] < a[j] && a[j] < a[k]) {
    						ans++;
    						a[j] = -1;
    						break;
    					}
    				}
    			}
    		}
    		System.out.println(ans);
    	}
    }
    

    问题描述

    ​ 一个平面向量表示从一个坐标点到另一个坐标点的变化量,一般用两个数 (x, y) 来表示。

    ​ 两个向量相加是指分别将对应的两个数相加,例如 (x_1, y_1) 与 (x_2, y_2) 相加后得 (x_1+x_2, y_1+y_2)。

    ​ 如果两个向量相加后,得到的向量两个值相等,我们称这两个向量为和谐向量对。例如 (3, 5) 和 (4, 2) 是和谐向量对。

    ​ 给定 n 个向量,问能找到多少个和谐向量对?

    输入格式

    ​ 输入的第一行包含一个整数 n,表示向量的个数。

    ​ 接下来 n 行,每行两个整数 x_i, y_i,表示一个向量。

    输出格式

    ​ 输出一行,包含一个整数,表示有多少个和谐向量对。

    ​ 请注意,自己和自己不能成为一个和谐向量对。

    样例输入

    ​ 5

    ​ 9 10

    ​ 1 3

    ​ 5 5

    ​ 5 4

    ​ 8 6

    样例输出

    ​ 2

    样例输入

    ​ 4

    ​ 1 1

    ​ 2 2

    ​ 1 1

    ​ 2 2

    样例输出

    ​ 6

    样例说明

    ​ 每两个向量组成一个和谐向量对。

    评测用例规模与约定

    ​ 对于 70% 的评测用例,1 <= n <= 1000;

    ​ 对于所有评测用例,1 <= n <= 100000,-1000000 <= x_i, y_i <= 1000000。

    ​ 请注意答案可能很大,可能需要使用 long long 来保存。

    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner scn = new Scanner(System.in);
    		int n = scn.nextInt();
    		if (n < 1 || n > 100000) {
    			return;
    		}
    		int[] x = new int[n];
    		int[] y = new int[n];
    		for (int i = 0; i < n; i++) {
    			x[i] = scn.nextInt();
    			if (x[i] < -1000000 || x[i] > 1000000) {
    				return;
    			}
    			y[i] = scn.nextInt();
    			if (y[i] < -1000000 || y[i] > 1000000) {
    				return;
    			}
    		}
    		int ans = 0;
    		for (int i=0; i<n-1; i++) {
    			for (int j = i+1; j<n; j++) {
    				if ((x[i]+x[j]) == (y[i]+y[j])) {
    					ans++;
    				}
    			}
    		}
    		System.out.println(ans);
    	}
    }
    

    问题描述

    ​ 小明想知道,满足以下条件的正整数序列的数量:

    1. 第一项为 n;

    2. 第二项不超过 n;

    3. 从第三项开始,每一项小于前两项的差的绝对值。

    ​ 请计算,对于给定的 n,有多少种满足条件的序列。

    输入格式

    ​ 每一行包含一个整数n。

    输出格式

    ​ 输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。

    样例输入

    ​ 4

    样例输出

    ​ 7

    样例说明

    ​ 以下是满足条件的序列:

    ​ 4 1

    ​ 4 1 1

    ​ 4 1 2

    ​ 4 2

    ​ 4 2 1

    ​ 4 3

    ​ 4 4

    评测用例规模与约定

    ​ 对于 20% 的评测用例,1 <= n <= 5;

    ​ 对于 50% 的评测用例,1 <= n <= 10;

    ​ 对于 80% 的评测用例,1 <= n <= 100;

    ​ 对于所有评测用例,1 <= n <= 1000。

    import java.util.Scanner;
    
    public class Main {
    
    	public static int count = 0;
    
    	public static void f(int n, int i) {
    		count = (count + 1) % 10000;
    		if (Math.abs(n - i) <= 1) {
    			return;
    		}
    		for (int j = 1; j < Math.abs(n - i); j++) {
    			f(i, j);
    		}
    		return;
    	}
    
    	public static void main(String[] args) {
    		Scanner scn = new Scanner(System.in);
    		int n = scn.nextInt();
    		for (int i = 1; i <= n; i++) {
    			f(n, i);
    		}
    		System.out.println(count);
    	}
    }
    

    问题描述

    ​ 2015年,全中国实现了户户通电。作为一名电力建设者,小明正在帮助一带一路上的国家通电。

    ​ 这一次,小明要帮助 n 个村庄通电,其中 1 号村庄正好可以建立一个发电站,所发的电足够所有村庄使用。

    ​ 现在,这 n 个村庄之间都没有电线相连,小明主要要做的是架设电线连接这些村庄,使得所有村庄都直接或间接的与发电站相通。

    ​ 小明测量了所有村庄的位置(坐标)和高度,如果要连接两个村庄,小明需要花费两个村庄之间的坐标距离加上高度差的平方,形式化描述为坐标为 (x_1, y_1) 高度为 h_1 的村庄与坐标为 (x_2, y_2) 高度为 h_2 的村庄之间连接的费用为

    ​ sqrt((x_1-x_2)(x_1-x_2)+(y_1-y_2)(y_1-y_2))+(h_1-h_2)*(h_1-h_2)。

    ​ 在上式中 sqrt 表示取括号内的平方根。请注意括号的位置,高度的计算方式与横纵坐标的计算方式不同。

    ​ 由于经费有限,请帮助小明计算他至少要花费多少费用才能使这 n 个村庄都通电。

    输入格式

    ​ 输入的第一行包含一个整数 n ,表示村庄的数量。

    ​ 接下来 n 行,每个三个整数 x, y, h,分别表示一个村庄的横、纵坐标和高度,其中第一个村庄可以建立发电站。

    输出格式

    ​ 输出一行,包含一个实数,四舍五入保留 2 位小数,表示答案。

    样例输入

    ​ 4

    ​ 1 1 3

    ​ 9 9 7

    ​ 8 8 6

    ​ 4 5 4

    样例输出

    ​ 17.41

    评测用例规模与约定

    ​ 对于 30% 的评测用例,1 <= n <= 10;

    ​ 对于 60% 的评测用例,1 <= n <= 100;

    ​ 对于所有评测用例,1 <= n <= 1000,0 <= x, y, h <= 10000。

    不一定每天 code well 但要每天 live well
  • 相关阅读:
    MySQL Execution Plan--合理利用隐式的业务逻辑
    MySQL Table--MySQL外键
    MySQL倒序索引测试2
    MySQL倒序索引测试1
    CCNA-3.硬件介质
    CCNA-2.OSI 7层网络模型
    CCNA-1.认识网络
    windows本地安装Oracle数据库
    扫码登录实现原理
    phpunit 单元测试
  • 原文地址:https://www.cnblogs.com/geekfx/p/12423078.html
Copyright © 2020-2023  润新知