平常工作过程中几乎不使用从终端输入的api,以至于在线笔试的时候可能会困顿与输入和输出操作,所以需要找历年的真题来练习一下。
题目1
输入描述:
一行,包含一个数N。
输出描述:
一行,包含一个数,表示最少收到的硬币数。
示例1
输入
200
输出
17
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); int N = scan.nextInt(); int[] coin = {1, 4, 16, 64}; int result = 0; int target = 1024-N; for(int j=3; target > 0; j--){ result += target/coin[j]; target = target % coin[j]; } System.out.println(result); } }
题目2:
题目描述
数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。
输入描述:
输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。
输出描述:
对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。
示例1
输入
81 4
2 2
输出
94.73
3.41
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner inputS = new Scanner(System.in); while(inputS.hasNext()){//对scanner中的以及print函数不是很了解我觉得有必要了解一下这样才能更好的应对之后所有的输入和输出,这一题不是道为甚hasNext就可以,但是使用hasNextLine就不可以,然后printf中需要手动加入换行符号才可以,需要找时间仔细料及 int n = inputS.nextInt(); int m = inputS.nextInt(); double sum = n; double temp = n; for(int i=1; i < m; i++){ sum += Math.sqrt(temp); temp = Math.sqrt(temp); } System.out.printf("%.2f\n", sum); } } }
java.util.Scanner
这个是一个在字节流基础上的包装,通常使用这个就非常方便了,因此new的时候需要使用System.in这样的字节流来进行初始化操作。
https://cloud.tencent.com/developer/article/1434310
http://www.ibloger.net/article/558.html
System.out.printf()
System.out.println()
System.out.print()
题目3
题目描述
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。
输入描述:
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
输出描述:
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;如果给定的范围内不存在水仙花数,则输出no;每个测试实例的输出占一行。
示例1
输入
100 120
300 380
输出
no
370 371
import java.util.Scanner; import java.util.List; import java.util.ArrayList; public class Main { public static boolean isVaildFlower(int n){ int sum = 0; int target = n;//这道题目很简单,但就是拜倒在了自己的这个n的变量被自己弄掉的路上了 while(n