郑州轻工业大学2022级程序设计班级天梯赛基础题题解
前排提醒
自己写的,我很菜,别喷了别喷了,如果能让你学到点什么那就再好不过了。
限于时间和篇幅,我就不在这里面详细描述题目了,参见这里,真的能进去吗:https://pintia.cn/problem-sets/1601181376764964864/
无所谓,我会出手
请直接输出 :“It doesn’t matter,I’ll do it.”(输出不含引号)。
样例输出
1
| It doesn't matter,I'll do it.
|
题解
1 2 3 4 5
| public class Main{ public static void main(String args[]){ System.out.println("It doesn't matter,I'll do it."); } }
|
数组总和
给出一个正整数和一段长度为n的数组,请输出的结果。
样例输入
样例输出
题解
需要注意的是有的测试点给的数据会超掉int的上限,好多人因为这个错了……
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import java.util.*;
public class Main { public static void main(String args[]) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); long a = 0; long all = 0; for (int i = 1; i <= n; i++) { a = scan.nextLong(); all = all + (i * a); } System.out.println(all); } }
|
捡到一个矩形
这天,我捡到了一个二维坐标轴,坐标轴上有一个矩形,现在给出一个点的坐标,问这个坐标是否在矩形中。
样例输入
1 2 3 4 5
| 2 0 0 2 2 1 1 1 1 2 2 0 0
|
样例输出
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import java.util.*;
public class Main { public static void main(String args[]) { Scanner scan = new Scanner(System.in); int t = scan.nextInt(); int x1,y1,x2,y2,x,y = 0; for(int i=0;i<t;i++){ x1 = scan.nextInt(); y1 = scan.nextInt(); x2 = scan.nextInt(); y2 = scan.nextInt(); x = scan.nextInt(); y = scan.nextInt(); if((x>=x1&&x<=x2)&&(y>=y1&&y<=y2)){ System.out.println("YES"); }else{ System.out.println("NO"); } } } }
|
字符转换
现给你一种对字符的操作,使其变成该字符在字母表后的第个位置,为该字符在字母表中的位置。例如,对字符进行操作,会将其变成后的第一个字母,即;对字符进行操作,会将其变成后的第二个字母,即…以此类推。
需要注意的是,该字母表是一个循环字母表,即字符后的第一个字符是,后又是,循环往复。
现在给你一个字符串s
,s
均由小写字母组成,1<=∣s
∣<=1e5,请输出对字符串s的每一位字符进行操作后的结果。
样例输入
样例输出
题解
个人感觉最难相通的是循环的时候对26取余数然后会出0……
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import java.util.*;
public class Main { public static void main(String args[]) { Scanner scan = new Scanner(System.in); String s = scan.next(); int len = s.length(); char a = 'a'; int hashCode = 0; int hashCode1 = 0; for (int i = 0; i < len; i++) { a = s.charAt(i); hashCode = (Character.hashCode(a) - 96) % 26; hashCode1 = (hashCode + hashCode) % 26; if (hashCode1 == 0) { hashCode1 = 26; } System.out.print(Character.toString(Character.toChars(hashCode1 + 96)[0])); } System.out.print("\n"); } }
|
捡到了一个成绩
天梯赛过后,所有同学的成绩被打印在一张纸上。现在老师想要统计某班得分的均值,以及得分高于这个均值的同学们的分数之和,请你帮助老师计算出这两个值。
样例输入
1 2
| 6 13 105 237 173 273 134
|
样例输出
题解
小数点后三位这玩意我想了半天
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| import java.util.*;
public class Main { public static void main(String args[]) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); double sum[] = new double[n]; double all = 0; double avr = 0; double high1 = 0; for(int i=0;i<n;i++){ sum[i] = scan.nextDouble(); } for(int i=0;i<n;i++){ all = all + sum[i]; } avr = all / n; System.out.printf("%.3f",avr); System.out.print("\n"); for(int i=0;i<n;i++){ if(sum[i]>avr){ high1 = high1 + sum[i]; } } System.out.printf("%.0f",high1); } }
|
炎爆
cys学姐非常喜欢Arknights这款游戏,而其中伊芙利特是她最引以为傲的干员之一。
给你一个的矩形,矩形中的每一个位置都有一个敌人,其中代表矩形第行,第列上的敌人。
假设伊芙利特部署在的位置上,并且朝向右,那么伊芙利特会对的所有敌人造成1点伤害。
现在给你次部署,每次部署都给出一个部署位置,代表伊芙利特部署在矩形的第行,第列,再给出一个字符op
,代表伊芙利特的朝向(U
代表向上,R
代表向右,D
代表向下,L
代表向左)。
你能精确算出每个敌人受到的伤害吗?
样例输入
样例输出
1 2 3 4 5
| 0 0 1 0 0 0 1 2 1 1 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1
|
可以看见吗?看不见记得反馈
题解
纯纯考验耐心
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| import java.util.*;
public class Main { public static void main(String args[]) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int q = scan.nextInt(); int square[][] = new int[n][n]; int x = 0; int y = 0; String op = ""; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ square[i][j] = 0; } } for(int i=0;i<q;i++){ x = scan.nextInt(); y = scan.nextInt(); op = scan.next(); if(op.equals("U")){ for(int j=0;j<=x-1;j++){ square[x-1-j][y-1]++; } }else if(op.equals("D")){ for(int j=0;j<=n-x;j++){ square[x-1+j][y-1]++; } }else if(op.equals("L")){ for(int j=0;j<y;j++){ square[x-1][y-1-j]++; } }else if(op.equals("R")){ for(int j=0;j<n-y+1;j++){ square[x-1][y-1+j]++; } } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ System.out.print(square[i][j]); if(j!=n-1){ System.out.print(" "); } } System.out.print("\n"); } } }
|
攻略迷宫
小A准备挑战一个副本,他的角色拥有x
点生命值,boss 每第y
秒攻击一次,每次对角色造成1
点伤害,当角色生命值为零时游戏结束,不会再受到攻击。现在给你一个时间段,假如小A从这个时间段开始时着手攻略副本,小A想知道他的角色在这段时间内会承受多少次攻击,以及最后一次被攻击的时间。
样例输入
样例输出
题解
纯纯考验耐心
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| import java.sql.Time; import java.util.*;
public class Main { public static void main(String args[]) { Scanner scan = new Scanner(System.in); int x = scan.nextInt(); int y = scan.nextInt(); String a = scan.next(); String b = scan.next(); Time timea = Time.valueOf(a); Time timeb = Time.valueOf(b); int sec = (timeb.hashCode()-timea.hashCode())/1000; int i = -1; while(sec>=0){ sec = sec-y; i++; if(i>=x){ break; } } timea.setTime(timea.hashCode()+(i*y*1000)); System.out.println(i); System.out.println(timea); } }
|
去掉重复的数据
李冠著加油!等你的代码!