蓝桥杯 2021 模拟赛习题 Java(一)

1、距离和

两个字母之间的距离定义为它们在字母表中位置的距离。例如 A 和 C 的距离为 2,L 和 Q 的距离为 5。
对于一个字符串,我们称字符串中两两字符之间的距离之和为字符串的内部距离。
例如:ZOO 的内部距离为 22,其中 Z 和 O 的距离为 11。
请问,LANQIAO 的内部距离是多少?

答案:162
注意这里是两两个字符之间,每两个字符之间都要

Math.abs() 绝对值的意思
s.charAt(i) 字符串s的下标i所对应的值

import java.util.Scanner;
public class Achar {
	public static void main(String[] args) {
		// TODO Auto-generated method stub		
		Scanner sc = new Scanner(System.in);
		String s=sc.nextLine();
		for (int i = 0; i < s.length()-1; i++) {
			for (int j = i+1; j < s.length(); j++) {
				sum+=Math.abs((int)s.charAt(i)-(int)s.charAt(j));
			}			
		}
		System.out.print(sum);		
	}
}

2、序列个数

请问有多少个序列满足下面的条件:
序列的长度为 5。
序列中的每个数都是 1 到 10 之间的整数。
序列中后面的数大于等于前面的数。


public class B {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int sum=0;
		for (int i = 1; i <= 10; i++) {
			for (int j = 1; j <=10; j++) {
				for (int j2 = 1; j2 <=10; j2++) {
					for (int k = 1; k <=10; k++) {
						for (int k2 = 1; k2 <=10; k2++) {
							if (k2>=k && k>=j2 && j2>=j && j>=i) {
								sum++;
							}
						}
					}
				}
			}
		}
		System.out.print(sum);
	}
}

3、倍数

请问在 1 到 2020 中,有多少个数既是 4的整数倍,又是 6 的整数倍。

public class C {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int sum=0;
		for (int i = 1; i < 2020; i++) {
			if(i%4==0 && i%6==0) {
				sum++;
			}
		}
		System.out.print(sum);
	}

}

4、二进制表示

小明要用二进制来表示 1 到 10000 的所有整数,要求不同的整数用不同的二进制数表示,请问,为了表示 1 到 10000的所有整数,至少需要多少个二进制位?

import java.util.Scanner;
public class D {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int sum=0;
		int i=10000;
		while(true) {
			if(i==0) {
				break;
			}
			i=i/2;
			sum++;
		}		
		System.out.print(sum);	       
	}
}

Integer.toString(10000, 2) 将10000转换成二进制
Integer.toString(10000, 10) 将10000转换成十进制

//更好的方法
import java.util.Scanner;
public class D {
	public static void main(String[] args) {	
	        String string = Integer.toString(10000, 2);
	        System.out.println(string.length())	     
	}
}

5、IP地址

一个 IPv4 的地址是由点分十进制数表示的,例如 192.168.20.20。
在网络传输时,一般直接把 IPv4 地址的数值部分表示成二进制数在网络中传输。请问,在网络中传输一个 IPv4 地址需要多少个二进制位?

每个位置最大的取值范围是0~255,IPv4是将IP地址分为四个部分

public class E {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s=Integer.toString(255,2);
		System.out.print(s.length()*4);
	}
}

6、逆序对数

在一个序列 a = (a[1], a[2], …, a[n]) 中,如果 (i, j)满足 i<j 且 a[i]>a[j],则称为一个逆序对。例如:(3, 2, 2, 1) 中包含 5 个逆序对。
请问(87,39,35,1,99,10,54,1,46,24,74,62,49,13,2,80,24,58,8,14,83,23,97,85,3,2,86,10,71,15) 中包含多少个逆序对?

//这里利用字符串数组,记得在进行字符串之间的比较的时候要将字符串转换成整形
public class F {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int sum=0;
		String s[]={"87","39","35","1","99","10","54","1","46","24","74","62","49","13","2","80","24","58","8","14","83","23","97","85","3","2","86","10","71","15"};
		for (int i = 0; i < s.length; i++) {
			for (int j = i+1; j < s.length; j++) {
				if(Integer.valueOf(s[i]) > Integer.valueOf(s[j])) {
					sum++;
				}
			}
		}
		System.out.print(sum);
	}
}

1、将字串 String 转换成整数 int
  Integer i = Integer.valueOf(str);
  int a=Integer.parseInt(str);
2 、如何将整数 int 转换成字串 String

  • String s = String.valueOf(i);
  • String s = Integer.toString(i);
  • String s = “” + i;

public class F {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
				 int[] arr = new int[] { 87, 39, 35, 1, 99, 10, 54, 1, 46, 24, 74, 62, 49, 13, 2, 80, 24, 58, 8, 14, 83, 23, 97,
	                85, 3, 2, 86, 10, 71, 15 };
	        int sum = 0;
	        for (int i = 0; i < arr.length; i++) {
	            for (int j = i + 1; j < arr.length; j++) {
	                if (arr[i] > arr[j]) {
	                    sum++;
	                }
	            }
	        }
	        System.out.println(sum);
	}
}
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值