第五届蓝桥杯大赛个人赛省赛(软件类)真题-Java语言B组
作者:互联网
1.武功秘籍
标题:武功秘籍
小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的)。他注意到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上。
小明只想练习该书的第81页到第92页的武功,又不想带着整本书。请问他至少要撕下多少张纸带走?
这是个整数,请通过浏览器提交该数字,不要填写任何多余的内容。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int a=in.nextInt(); //起始页
int b=in.nextInt(); //终止页
if(a%2==1&&b%2==1) { //奇数开始,奇数结束
System.out.println((b-a)/2+1);
}
if(a%2==1&&b%2==0) { //奇数开始,偶数结束
System.out.println((b-a+1)/2+1);
}
if(a%2==0&&b%2==1) { //偶数开始,奇数结束
System.out.println((b-a+1)/2);
}
if(a%2==0&&b%2==0) { //偶数开始,偶数结束
System.out.println((b-a)/2+1);
}
}
}
答案:7
2.切面条
标题:切面条
一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折10次,中间切一刀,会得到多少面条呢?
答案是个整数,请通过浏览器提交答案。不要填写任何多余的内容。
【解析】
对折0次,得到2根;
对折1次,得到2 * 2 - 1 = 3
对折2次,得到3 * 2 - 1 = 5
对折3次,得到5 * 2 - 1 = 9
对折4次,得到9 * 2 - 1 = 17
对折5次,得到17 * 2 - 1 = 33
对折6次,得到33 * 2 - 1 = 65
对折7次,得到65 * 2 - 1 = 129
对折8次,得到129 * 2 - 1 = 257
对折9次,得到257 * 2 - 1 = 513
对折10次,得到513 * 2 - 1 = 1025
public class Main{
public static int F(int n)
{
if(n==0)
return 2;
return 2*F(n-1)-1;
}
public static void main(String[] args) {
System.out.println("对折10次得到"+Main.F(10)+"根面条");
}
}
答案:1025
3.猜字母
标题:猜字母
把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。
接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。
得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。
答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。
public class Main{
public static void main(String[] args) {
char[] a = new char[2014];
int index = 0;
for (int i = 0; i < 106; i++) {
for (int j = 0; j < 19; j++) {
a[index++] = (char) ('a' + j);
}
}
// for (int i = 0; i < 2014; i++) {
// System.out.print(a[i] + " ");
// }
int len = 2014;
while (len != 1) {
int k = 0;
for (int i = 1; i < len; i += 2) {
a[k++] = a[i];
}
len = k;
}
System.out.println(a[0]);
}
}
答案:q
标签:Java,真题,int,System,蓝桥,对折,得到,public,out 来源: https://blog.csdn.net/WHT869706733/article/details/122566086