【天梯赛】2021年真题(L1)

119 阅读2分钟

public class Main {

public static void main(String[] args) {

	

	System.out.println("To iterate is human, to recurse divine.");

}

}




[]( )🌿L1-074 两小时学完C语言 (5 分)

------------------------------------------------------------------------------------------



### []( )题目链接



[题目详情 - L1-074 两小时学完C语言 (5 分) (pintia.cn)]( )



### []( )Java题解



知道怎么获取输入,知道基本的的四则运算就好了



import java.util.Scanner;

public class Main {

public static void main(String[] args) {

	// TODO Auto-generated method stub

	Scanner scanner=new Scanner(System.in);

	int n,k,m;

	n=scanner.nextInt();

	k=scanner.nextInt();

	m=scanner.nextInt();

	System.out.println(n-(k*m));

	scanner.close();

}

}




[]( )🌷L1-075 强迫症 (10 分)

--------------------------------------------------------------------------------------



### []( )题目链接



[题目详情 - L1-075 强迫症 (10 分) (pintia.cn)]( )



### []( )Java题解



这里考察会不会 选择语句 以及 格式输出



对于输入是6位数,可以直接输出



对于输入是4位数,又要分为两种情况,



1.  年份后两位小于22,默认是202.  其他情况,默认是19年



最后需要注意的是要输出前导的0 ,我们需要使用到`System.out.printf("20%02d-%02d",year,mon);`



import java.util.Scanner;

public class Main {

public static void main(String[] args) {

	

	Scanner scanner=new Scanner(System.in);

	String string=scanner.next();

	int len=string.length();

	int year,mon;

    

	if(len==4) {

		year=Integer.parseInt((String) string.subSequence(0, 2));

		mon=Integer.parseInt((String) string.subSequence(2, 4));

		if(year<22) {

			System.out.printf("20%02d-%02d",year,mon);

		}else {

			System.out.printf("19%02d-%02d",year,mon);

		}

	}else {

		year=Integer.parseInt((String) string.subSequence(0, 4));

		mon=Integer.parseInt((String) string.subSequence(4, 6));

		System.out.printf("%d-%02d",year,mon);

	}

	scanner.close();

}

}




[]( )🥀L1-076 降价提醒机器人 (10 分)

------------------------------------------------------------------------------------------



### []( )题目链接



[题目详情 - L1-076 降价提醒机器人 (10 分) (pintia.cn)]( )



### []( )Java题解



这里考查浮点型数据的使用以及多组输入(循环结构的使用)



import java.util.Scanner;

public class Main {

public static void main(String[] args) {

	

	Scanner scanner=new Scanner(System.in);

	int n=scanner.nextInt();

	

	int m=scanner.nextInt();

    

	float k;

	while(n--!=0) {

		k=scanner.nextFloat();

		if(k<m) {

			System.out.println("On Sale! "+k);

		}

	}

}

}




[]( )🌼L1-077 大笨钟的心情 (15 分)

-----------------------------------------------------------------------------------------



### []( )题目链接



[题目详情 - L1-077 大笨钟的心情 (15 分) (pintia.cn)]( )



### []( )Java题解



这里考查数组的使用



我们可以先把24个代表心情指数的整数存放在一个整型数组中



每次获取合法的输入,就直接和数组的下标找到对应的心情指数,大于50输出“Yes",小于50就输出”No“即可;



如果是非法的输入,就直接`return;`结束程序



import java.util.Scanner;

public class Main {

public static void main(String[] args) {

	// TODO Auto-generated method stub

	Scanner scanner=new Scanner(System.in);

	int []num= new int[24];

	for(int i=0;i<24;++i) {

		num[i]=scanner.nextInt();

	}

	int k;

	while(scanner.hasNext()) {

		k=scanner.nextInt();

		if(k<0||k>23) {

			return;

		}else {

			if(num[k]>50) {

				System.out.println(num[k]+" Yes");

			}else {

				System.out.println(num[k]+" No");

			}

		}

	}

	scanner.close();

	

}

}




[]( )🌳L1-078 吉老师的回归 (15 分)

-----------------------------------------------------------------------------------------



### []( )题目链接



[题目详情 - L1-078 吉老师的回归 (15 分) (pintia.cn)]( )



### []( )Java题解



有n道题,但是只有“难题”吉老师才会做,所以我们开两个字符串数组,`strings[]`一个存所有题目,另一个`noEasy[]`按顺序存吉老师会做的题目,并统计他会做的题的数量`no`;如果最终吉老师做了的题大于等于no,说明吉老师已经做完了,如果小于no的话就直接输出`noEasy[m]`,因为`noEasy[m]`中的题目是按顺序存放的。



import java.util.Scanner;

public class Main {

public static void main(String[] args) {

	

	Scanner scanner=new Scanner(System.in);

	int n=scanner.nextInt();

	int m=scanner.nextInt();

	String []strings=new String[n];

	String []noEasy=new String[n];

	int no=0;

	scanner.nextLine();//注意吞掉这个回车

	for(int i=0;i<n;++i) {

		

		strings[i]=scanner.nextLine();

		if(!strings[i].contains("easy")&&!strings[i].contains("qiandao")) {

			noEasy[no]=strings[i];

			no++;

		}

	}

	if(m>=no) {

		System.out.println("Wo AK le");

	}else {

		System.out.println(noEasy[m]);

	}

	scanner.close();

	

}

}




[]( )🌺L1-079 天梯赛的善良 (20 分)

-----------------------------------------------------------------------------------------



### []( )题目链接



[题目详情 - L1-079 天梯赛的善良 (20 分) (pintia.cn)]( )



### []( )Java题解(AC80%)



这题最后一个测试点超时了,不管了,用java写PTA感觉很多题的一些测试点卡的很死



import java.util.Scanner;

public class Main {

public static void main(String[] args) {

	// TODO Auto-generated method stub

	Scanner scanner=new Scanner(System.in);

	int num=scanner.nextInt();

	

	int []scor=new int[num];

	for(int i=0;i<num;++i) {

		scor[i]=scanner.nextInt();

	}

	int min=99999999,max=0;

	int cmin=0,cmax=0;



	for(int i=0;i<num;++i) {

		if(scor[i]<min) {

			min=scor[i];

			cmin=1;

		}else if(scor[i]==min) {

			cmin++;

		}

		

		if(scor[i]>max) {

			max=scor[i];

			cmax=1;

		}else if(scor[i]==max) {

			cmax++;

		}

	}

	

	

	System.out.println(min+" "+cmin);

	System.out.println(max+" "+cmax);

	scanner.close();

}

}




[]( )🌲L1-080 乘法口诀数列 (20 分)

-----------------------------------------------------------------------------------------



### []( )题目链接



[题目详情 - L1-080 乘法口诀数列 (20 分) (pintia.cn)]( )



### []( )Java题解



这道题可以用字符串拼接来做,依次遍历字符串,两两相乘将结果拼接到串的后面



import java.util.Scanner;