task2_4
题目
【问题描述】若将某一素数的各位数字的顺序颠倒后得到的数仍是素数,则此素数称为可逆素数。编写一个判断某数是否可逆素数的函数,在主函数中输入一个整数,再调用此函数进行判断
【输入形式】用户在第一行输入一个整数。
【输出形式】程序在下一行输出yes或是no,yes表示此数是可逆素数,no表示不是。用户输入的数必须为正整数。注意:yes或是no全是小写输出。
【样例输入】23
【样例输出】no
【样例说明】用户输入23,23各位数字颠倒之后得到32,23是素数,但32不是素数,所以23不是可逆素数。
【评分标准】结果完全正确得满分。
解答
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
| public class task2_4 { public int reverse(int num){ int newNum = 0; while (num != 0){ int digit = num % 10; newNum = newNum * 10 + digit; num /= 10; } return newNum; } public boolean sushu(int num){ for (int i = 2; i < num; i++){ if(num % i == 0){ return false; } } return true; } public boolean kenisushu(int num){ if (sushu(num)&&sushu(reverse(num))){ return true; } else { return false; } } public static void main(String[] args) { task2_4 ta = new task2_4(); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); if(ta.kenisushu(num)){ System.out.println("yes"); }else { System.out.println("no"); } } }
|
task3_5
问题
【问题描述】
从键盘输入一行英文字符串,只统计字符串中出现的每个英文字母的个数。大小写字母算相同的字符,不做区分,例如a和A,算相同字符。
【输入形式】
输入一行英文字符串。
【输出形式】
以合适的形式输出每个英文字母出现的次数,没有出现的字母,不输出次数。
【样例输入①】
hello,world.
【样例输出①】
(D)Num=1
(E)Num=1
(H)Num=1
(L)Num=3
(O)Num=2
®Num=1
(W)Num=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
| public class task3_5 { public static void main(String[] args) { int[] num = new int[24]; char[] ch = new char[24]; for (int c : num) { c = 0; } for (int i = 0; i < ch.length; i++) { ch[i] = (char)(65+i); } Scanner sc = new Scanner(System.in); String str = sc.nextLine().toUpperCase(); for (int i = 0; i < str.length(); i++) { for (int j = 0; j < ch.length; j++) { if(str.charAt(i) == ch[j]){ num[j]++; } } } for (int i = 0; i < num.length; i++) { if(num[i] != 0){ System.out.println("("+ch[i]+")Num="+ num[i]); } } } }
|
Task4_2
题目
【问题描述】
从键盘输入10个整数,存放在一个数组中,然后使数组中的所有整数整体向后移动m个位置,最后m个数变成最前面的m个数,并输出移动后的结果。m从键盘输入。
【输入形式】
输入10个整数,每个整数间用空格分隔,回车。然后输入整数m。
【输出形式】
首先输出数组中的10个元素,然后输出后移m位以后的数组所有元素。
【输入输出样例】
Please input 10 numbers:
1 2 3 4 5 6 7 8 9 10
Your numbers are:
1 2 3 4 5 6 7 8 9 10
Please input m:
3
The new numbers are:
8 9 10 1 2 3 4 5 6 7
解答
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
| public class task4_2 { public static void main(String[] args) { int[] arr = new int[10]; int m; System.out.println("Please input 10 numbers:"); Scanner scanner = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) { arr[i] = scanner.nextInt(); }
System.out.println("Your numbers are:"); for (int i : arr) { System.out.print(i + " "); } System.out.println(); System.out.println("Please input m:"); m = scanner.nextInt()%arr.length; int[] n_arr = arr.clone();
for (int i = 0; i < arr.length; i++) { if (i < m) { n_arr[i] = arr[arr.length - m + i]; } else { n_arr[i] = arr[i - m]; } } System.out.println("The new numbers are:"); for (int i : n_arr) { System.out.print(i + " "); } System.out.println(); } }
|
Task4_4
题目
【问题描述】输入一个高精度的大正整数S(S最长可达240位),去掉其中任意N位数字后剩下的数字按原次序组成一个新的正整数S’。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数S’最小。
【输入形式】输入有两行:
1.第一行是大整数S。其中S最长可达240位。
2.第二行是整数N。S、N均以非0数字开头。
【输出形式】输出有一行,是在S中删除N位后所得的最小数字S’。
【样例输入1】
178543
4
【样例输出1】13
【样例输入2】
1002
1
【样例输出2】002
【样例说明】样例1中输入整数S=178543,N=4,要求在178543中删除4位,使剩下的数字最小。正确答案为S’= 13。样例2中输入整数S=1002,N=1,删完一位后S’= 002,而不是2,即2之前的0也必须输出。
解答
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
| public class task4_4_M { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); int num = scanner.nextInt(); StringBuilder sb = new StringBuilder(str);
there: for (int j = 0; j < num; j++) { for (int i = 0; i < sb.length() - 1 ; i++) { if(sb.charAt(i) > sb.charAt(i+1)){ sb.delete(i, i+1); continue there; } } sb.delete(sb.length()-1, sb.length()); } System.out.println(sb.toString());
} }
|