T2081,T2131,T1136
- T2081
- T2131
- T1136
- 计蒜客网址
T2081
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 N 天每天收到 N 枚金币后,骑士会在之后的连续 N+1 天里,每天收到 N+1枚金币。
请计算在前 K 天里,骑士一共获得了多少金币
解析:使用双重循环
等效 i:层数 j:每层的持续时间 j <= i
1 1 1 1
2 3 1 2 2 2
4 5 6 1 2 3 3 3
Scanner scan = new Scanner(System.in);int K = scan.nextInt();int amount = 0;//金币数int sumDays = 0;//总天数boolean isFlag = true;//外层循环控制层数for(int i = 0; ;i++){if(!isFlag){break;}//内层循环控制每层的持续时间for(int j = 1;j <= i;j++){//sumDays == K 退出循环if(sumDays == K){isFlag = false;break;}sumDays++;amount += i;}}System.out.println(amount);
6
14
T2131
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个 1 到 1000 之间的随机整数( N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作
解析:使用 TreeSet 来接受数据 达到去重,使用定制排序 实现数据从小到大排序
package com.java3.ch3;import java.util.*;public class T2131 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();TreeSet<Integer> set = new TreeSet<>(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o1 - o2;}});ArrayList<Integer> list = new ArrayList<>();for(int i = 0;i < n;i++){int temp = scan.nextInt();
// list.add(temp);set.add(temp);}//测试数据接收
// for(Integer temp1 : list){
// System.out.print(temp1 + " ");
// }System.out.println(set.size());for(Integer temp2 : set){System.out.print(temp2 + " ");}}
}
10
20 40 32 67 40 20 89 300 400 15
8
15 20 32 40 67 89 300 400
T1136
计算两个矩阵的乘法。n×m 阶的矩阵 A 乘以 m×k 阶的矩阵 B 得到的矩阵 C 是n×k 阶的,且 C[i][j] = A[i][0] B[0][j] + A[i][1] * B[1][j] + …… +A[i][m-1] B[m-1][j] (C[i][j] 表示 C 矩阵中第 i 行第 j 列元素)
解析:使用二重数组接受输入的矩阵A,B 对于矩阵乘法 使用二重循环 遍历矩阵C的元素 在加一重循环确定元素取值
package com.java3.ch3;
import java.util.Scanner;
public class T1136 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();int m = scan.nextInt();int k = scan.nextInt();int[][] arrayA = new int[n][m];int[][] arrayB = new int[m][k];int[][] arrayC = new int[n][k];//A矩阵的输入for(int i = 0;i < n;i++) {for(int j = 0;j<m;j++) {arrayA[i][j] = scan.nextInt();}}//B矩阵的输入for(int i = 0;i < m;i++) {for(int j = 0;j < k;j++) {arrayB[i][j] = scan.nextInt();}}//矩阵乘法 得到矩阵Cfor(int i = 0;i < n;i++) {for(int j = 0;j< k;j++) {for(int z = 0;z < m;z++) {arrayC[i][j] += arrayA[i][z] * arrayB[z][j];}}}for(int i = 0;i < n;i++) {for(int j = 0;j<k;j++) {System.out.print(arrayC[i][j] + " ");}System.out.println();}}
}
3 2 3
1 1
1 1
1 1
1 1 1
1 1 1
2 2 2
2 2 2
2 2 2
计蒜客网址
直达链接