1、请问在 1 到 2020 中,有多少个数既是 4 的整数倍,又是 6 的整数倍
package compus_test;
// question 1
//请问在 1 到 2020 中,有多少个数既是 4 的整数倍,又是 6 的整数倍
public class Demo_01 {
public static void main(String[] args) {
int count = 0;
for (int i = 1; i < 2021; i++) {
if (i % 4 == 0 && i % 6 == 0) {
count++;
}
}
System.out.println(count);
}
}
2、小明要用二进制来表示 1 到 10000 的所有整数,要求不同的整数用不同的
二进制数表示,请问,为了表示 1 到 10000 的所有整数,至少需要多少个
二进制位?
package compus_test;
//question 2
//小明要用二进制来表示 1 到 10000 的所有整数,要求不同的整数用不同的
//二进制数表示,请问,为了表示 1 到 10000 的所有整数,至少需要多少个
//二进制位?
public class Demo_02 {
public static void main(String[] args) {
System.out.println(Math.pow(2, 14));
//即14
}
}
3、请问有多少个序列满足下面的条件:
1.序列的长度为 5。
2.序列中的每个数都是 1 到 10 之间的整数。
3 序列中后面的数大于等于前面的数。
public class Demo_03 {
public static void main(String[] args) {
// //从内部进行快速迭代比从条件上约束效率更高
int count = 0;
for (int number1 = 1; number1 <= 10; number1++) {
for (int number2 = number1; number2 <= 10; number2++) {
for (int number3 = number2; number3 <= 10; number3++) {
for (int number4 = number3; number4 <= 10; number4++) {
for (int number5 = number4; number5 <= 10; number5++) {
count++;
}
}
}
}
}
System.out.println(count);
//一秒时间
//
// int count2 = 0;
//
// for (int number1 = 1; number1 <= 10; number1++) {
// for (int number2 = 1; number2 <= 10; number2++) {
// if (number2 < number1) {
// continue;
// }
// for (int number3 = 1; number3 <= 10; number3++) {
// if(number3 < number2) continue;
// for (int number4 = 1; number4 <= 10; number4++) {
// if(number4 < number3) continue;
// for (int number5 = 1; number5 <= 10; number5++) {
// if(number5 < number4) continue;
// count2++;
// }
// }
// }
// }
// }
//
// System.out.println(count2);
//一秒不到
}
}
4、一个无向图包含 2020 条边,如果图中没有自环和重边,请问最少包含多
少个结点?
package compus_test;
//question 4
//一个无向图包含 2020 条边,如果图中没有自环和重边,请问最少包含多
//少个结点?
//公式 无向图变数 n = (m * (m - 1)) / 2;
public class Demo_04 {
public static void main(String[] args) {
int n = 2020;
for (int i = 60; i < 71; i++) {
System.out.println((i * (i - 1)) / 2 + " i " + i);
}
}
}
5、两个字母之间的距离定义为它们在字母表中位置的距离。例如 A 和 C 的
距离为2,L 和 Q 的距离为 5。对于一个字符串,我们称字符串中两两字
符之间的距离之和为字符串的内部距离。例如:ZOO 的内部距离为 22,其
中 Z 和 O 的距离为 11。请问,LANQIAO 的内部距离是多少?
package compus_test;
//question 5
//两个字母之间的距离定义为它们在字母表中位置的距离。例如 A 和 C 的
//距离为2,L 和 Q 的距离为 5。对于一个字符串,我们称字符串中两两字
//符之间的距离之和为字符串的内部距离。例如:ZOO 的内部距离为 22,其
//中 Z 和 O 的距离为 11。请问,LANQIAO 的内部距离是多少?
public class Demo_05 {
public static void main(String[] args) {
String chaString = "LANQIAO";
int sum = 0;
char[] cha = chaString.toCharArray();
for (int i = 0; i < cha.length; i++) {
for (int j = i; j < cha.length; j++) {
sum += Math.abs(cha[j] - cha[i]);
}
}
System.out.println(sum);
}
}
6、题目描述
给定一个平行四边形的底边长度 l和高度 h,求平行四边形的面积。
输入格式
输入的第一行包含一个整数 l,表示平行四边形的底边长度。
第二行包含一个整数 h,表示平行四边形的高。
输出格式
输出一个整数,表示平行四边形的面积。(提示:底边长度和高都是整数的平行四边形面积为整数)
样例输入
2
7
样例输出
14
数据规模和约定
对于所有评测用例:1 ≤ l , h ≤ 100
package compus_test;
//question 6
//编程题
//题目描述
//给定一个平行四边形的底边长度 l和高度 h,求平行四边形的面积。
//输入格式
//输入的第一行包含一个整数 l,表示平行四边形的底边长度。
//第二行包含一个整数 h,表示平行四边形的高。
//输出格式
//输出一个整数,表示平行四边形的面积。(提示:底边长度和高都是整数的平行四边形面积为整数)
//样例输入
//
//2
//7
//样例输出
//
//14
//
//数据规模和约定
//对于所有评测用例:1 ≤ l , h ≤ 100
import java.util.Scanner;
public class Demo_06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//输出长度
int l = sc.nextInt();
//输入高度
int h = sc.nextInt();
System.out.println(l * h);
}
}
7、题目描述
现在时间是 a 点 b 分,请问 t分钟后,是几点几分?
输入格式
输入的第一行包含一个整数 a 。
第二行包含一个整数 b 。
第三行包含一个整数 t 。
输出格式
输出第一行包含一个整数,表示结果是几点。
第二行包含一个整数,表示结果是几分。
样例输入
3
20
165
样例说明
6
5
数据规模和约定
对于所有评测用例:0≤a≤23,0≤b≤59,0≤t,t 分钟后还是在当天。
package compus_test;
import java.util.Scanner;
//第七题
//现在时间是 a 点 b 分,请问 t分钟后,是几点几分?
public class Demo_09 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();//时钟
int b = sc.nextInt();//分钟
int t = sc.nextInt();//t分钟后
System.out.println(a + (t + b) / 60);
System.out.println((t + b) % 60);
}
}
8、题目描述
小蓝负责花园的灌溉工作。
花园可以看成一个 n 行 m 列的方格图形。中间有一部分位置上安装有出水管。
小蓝可以控制一个按钮同时打开所有的出水管,打开时,有出水管的位置可以被认为已经灌溉好。
每经过一分钟,水就会向四面扩展一个方格,被扩展到的方格可以被认为已经灌溉好。即如果前一分钟某一个方格被灌溉好,则下一分钟它上下左右的四个方格也被灌溉好。
给定花园水管的位置,请问 k 分钟后,有多少个方格被灌溉好?
输入格式
输入的第一行包含两个整数 n , m。
第二行包含一个整数 t ,表示出水管的数量。
接下来 t 行描述出水管的位置,其中第 i 行包含两个数 r , c 表示第 r 行第 c 列有一个排水管。
接下来一行包含一个整数 k。
输出格式
输出一个整数,表示答案。
样例输入
3 6
2
2 2
3 4
样例输出
9
样例说明
用1表示灌溉到,0表示未灌溉到。
打开水管时:
000000
010000
000100
1分钟后:
010000
111100
011110
共有9个方格被灌溉好。
数据规模和约定
对于所有评测用例:1 <= n, m <= 100, 1 <= t <= 10, 1 <= k <= 100。
将最初水龙头的位置标记,存入队列,再用一个队列存储下一分钟蔓延的位置,每分钟结束,更新队列中的元素,最后输出在规定时间内灌溉的位置有多少个即可。
package compus_test;
import java.util.Arrays;
import java.util.Scanner;
//question 8
//小蓝负责花园的灌溉工作
public class Demo_07 {
static int[] fx = {-1, 1, 0, 0};//左右上下
static int[] fy = {0, 0, -1, 1};
static int count = 0;
static int[][] array;
static int[][] position;
static int[][] temp;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//n行
int n = sc.nextInt();
//m列
int m = sc.nextInt();
//数组
array = new int[n][m];
//临时存储
temp = new int[n][m];
//水管数量
int t = sc.nextInt();
position = new int[t][2];
//传入水管坐标
for (int i = 0; i < position.length; i++) {
position[i][0] = sc.nextInt();
position[i][1] = sc.nextInt();
}
//时间
int k = sc.nextInt();
//初始化
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
initialize(i, j);
}
// System.out.println(Arrays.toString(array[i]));
}
change(k,temp);
//显示
display();
// for (int i = 0; i < temp.length; i++) {
// System.out.println(Arrays.toString(temp[i]));
// }
//关闭
sc.close();
}
//对矩阵进行初始化
public static void initialize(int i, int j) {
for (int k = 0; k < position.length; k++) {
//当该位置与用户输入的位置相同时,将该位置填充为1
if (position[k][0] == i+1 && position[k][1] == j+1) {
array[i][j] = 1;
}
}
}
public static void change(int k,int[][] temp) {
//执行k分钟
for (int i = 0; i < k; i++) {
//遍历矩阵
for (int row = 0; row < array.length; row++) {
for (int col = 0; col < array[row].length; col++) {
//如果该位置的值等于1
if (array[row][col] == 1) {
temp[row][col] = 1;
//对该位置四个方向进行填充
for (int j = 0; j < fx.length; j++) {
//判断边界
if ((row + fy[j] >= 0 && row + fy[j] < array.length) && (col + fx[j] >= 0 && col + fx[j] < array[row].length)) {
//填充1
temp[row + fy[j]][col + fx[j]] = 1;
}
}
}
}
}
}
}
//对值为1的位置进行计数
public static void display() {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (temp[i][j] == 1) {
count++;
}
}
}
//显示结果
System.out.println(count);
}
}
9、题目描述
小蓝有一张黑白图像,由 n ∗ m 个像素组成,其中从上到下共 n 行,每行从左到右 m列。每个像素由一个 0 到 255 之间的灰度值表示。
现在,小蓝准备对图像进行模糊操作,操作的方法为:
对于每个像素,将以它为中心 3 * 3 区域内的所有像素(可能是 9 个像素或少于 9 个像素)求和后除以这个范围内的像素个数(取下整),得到的值就是模糊后的结果。
请注意每个像素都要用原图中的灰度值计算求和。
输入格式
输入的第一行包含两个整数 n , m。
第 2 行到第 n + 1 行每行包含 m个整数,表示每个像素的灰度值,相邻整数之间用一个空格分隔。
输出格式
输出 n 行,每行 m 个整数,相邻整数之间用空格分隔,表示模糊后的图像。
样例输入
3 4
0 0 0 255
0 0 255 0
0 30 255 255
样例输出
0 42 85 127
5 60 116 170
7 90 132 191
数据规模和约定
对于所有评测用例,1 <= n, m <= 100。
扩展有8个方向扩展,然后以当前这个点为中心向 8 个方向扩展即可,最后按照题意求模糊值。
package compus_test;
//question 9
import java.util.Scanner;
//模糊处理
public class Demo_10 {
//上下左右,左上,右上,右下,左下
static int[] fy = {-1, 1, 0, 0, -1, -1, 1, 1};
static int[] fx = {0, 0, -1, 1, -1, 1, 1, -1};
static int[][] array;
static int[][] temp;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//m行,n列
int n = sc.nextInt();
int m = sc.nextInt();
array = new int[n][m];
temp = new int[array.length][array[0].length];
//对矩阵进行初始化
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
array[i][j] = sc.nextInt();
}
}
//模糊化处理
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
change(i, j);
}
}
//显示矩阵
for (int i = 0; i < temp.length; i++) {
for (int j = 0; j < temp[i].length; j++) {
System.out.print(temp[i][j] + " ");
}
System.out.println();
}
}
private static void change(int i, int j) {
//求和
int sum = array[i][j];
//计数
int count = 1;
for (int k = 0; k < fy.length; k++) {
//判断是否在边界内
if ((i + fy[k] >= 0 && i + fy[k] < array.length) && (j + fx[k] >= 0 && j + fx[k] < array[i].length)) {
//计算八个方向的和
sum += array[i + fy[k]][j + fx[k]];
//并计数
count++;
}
}
//求平均值并将值赋给新的矩阵
int average = sum / count;
temp[i][j] = average;
}
}