预赛Java本科A组Word格式.docx
- 文档编号:18468578
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:12
- 大小:48.44KB
预赛Java本科A组Word格式.docx
《预赛Java本科A组Word格式.docx》由会员分享,可在线阅读,更多相关《预赛Java本科A组Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
一直要跳到“华”字结束。
要求跳过的路线刚好构成“从我做起振兴中华”这句话。
请你帮助小明算一算他一共有多少种可能的跳跃路线呢?
答案是一个整数,请通过浏览器直接提交该数字。
注意:
不要提交解答过程,或其它辅助说明类的内容。
3.结果填空(满分6分)
梅森素数
如果一个数字的所有真因子之和等于自身,则称它为“完全数”或“完美数”
例如:
6=1+2+3
28=1+2+4+7+14
早在公元前300多年,欧几里得就给出了判定完全数的定理:
若2^n-1是素数,则2^(n-1)*(2^n-1)是完全数。
其中^表示“乘方”运算,乘方的优先级比四则运算高,例如:
2^3=8,2*2^3=16,2^3-1=7
但人们很快发现,当n很大时,判定一个大数是否为素数到今天也依然是个难题。
因为法国数学家梅森的猜想,我们习惯上把形如:
2^n-1的素数称为:
梅森素数。
截止2013年2月,一共只找到了48个梅森素数。
新近找到的梅森素数太大,以至于难于用一般的编程思路窥其全貌,所以我们把任务的难度降低一点:
1963年,美国伊利诺伊大学为了纪念他们找到的第23个梅森素数n=11213,在每个寄出的信封上都印上了“2^11213-1是素数”的字样。
2^11213-1这个数字已经很大(有3000多位),请你编程求出这个素数的十进制表示的最后100位。
答案是一个长度为100的数字串,请通过浏览器直接提交该数字。
4.结果填空(满分13分)
颠倒的价牌
小李的店里专卖其它店中下架的样品电视机,可称为:
样品电视专卖店。
其标价都是4位数字(即千元不等)。
小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了(参见p1.jpg)。
这种价牌有个特点,对一些数字,倒过来看也是合理的数字。
如:
1256890都可以。
这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:
1958倒着挂就是:
8561,差了几千元啊!
当然,多数情况不能倒读,比如,1110就不能倒过来,因为0不能作为开始数字。
有一天,悲剧终于发生了。
某个店员不小心把店里的某两个价格牌给挂倒了。
并且这两个价格牌的电视机都卖出去了!
庆幸的是价格出入不大,其中一个价牌赔了2百多,另一个价牌却赚了8百多,综合起来,反而多赚了558元。
请根据这些信息计算:
赔钱的那个价牌正确的价格应该是多少?
答案是一个4位的整数,请通过浏览器直接提交该数字。
5.代码填空(满分5分)
标题:
三部排序
一般的排序有许多经典算法,如快速排序、希尔排序等。
但实际应用时,经常会或多或少有一些特殊的要求。
我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。
比如,对一个整型数组中的数字进行分类排序:
使得负数都靠左端,正数都靠右端,0在中部。
注意问题的特点是:
负数区域和正数区域内并不要求有序。
可以利用这个特点通过1次线性扫描就结束战斗!
以下的程序实现了该目标。
staticvoidsort(int[]x)
{
intp=0;
intleft=0;
intright=x.length-1;
while(p<
=right){
if(x[p]<
0){
intt=x[left];
x[left]=x[p];
x[p]=t;
left++;
p++;
}
elseif(x[p]>
intt=x[right];
x[right]=x[p];
right--;
else{
_________________________;
//代码填空位置
}
}
如果给定数组:
25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0
则排序后为:
-3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25
请分析代码逻辑,并推测划线处的代码,通过网页提交
仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!
!
6.代码填空(满分10分)
逆波兰表达式
正常的表达式称为中缀表达式,运算符在中间,主要是给人阅读的,机器求解并不方便。
3+5*(2+6)-1
而且,常常需要用括号来改变运算次序。
相反,如果使用逆波兰表达式(前缀表达式)表示,上面的算式则表示为:
-+3*5+261
不再需要括号,机器可以用递归的方法很方便地求解。
为了简便,我们假设:
1.只有+-*三种运算符
2.每个运算数都是一个小于10的非负整数
下面的程序对一个逆波兰表示串进行求值。
其返回值为一个数组:
其中第一元素表示求值结果,第二个元素表示它已解析的字符数。
staticint[]evaluate(Stringx)
if(x.length()==0)returnnewint[]{0,0};
charc=x.charAt(0);
if(c>
='
0'
&
&
c<
9'
)returnnewint[]{c-'
1};
int[]v1=evaluate(x.substring
(1));
int[]v2=__________________________________________;
//填空位置
intv=Integer.MAX_VALUE;
if(c=='
+'
)v=v1[0]+v2[0];
*'
)v=v1[0]*v2[0];
-'
)v=v1[0]-v2[0];
returnnewint[]{v,1+v1[1]+v2[1]};
请分析代码逻辑,并推测划线处的代码,通过网页提交。
7.程序设计(满分4分)
错误票据
某涉密单位下发了某种票据,并要在年终全部收回。
每张票据有唯一的ID号。
全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。
因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。
你的任务是通过编程,找出断号的ID和重号的ID。
假设断号不可能发生在最大和最小号。
要求程序首先输入一个整数N(N<
100)表示后面数据行数。
接着读入N行数据。
每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000)
每个整数代表一个ID号。
要求程序输出1行,含两个整数mn,用空格分隔。
其中,m表示断号ID,n表示重号ID
例如:
用户输入:
2
568119
10129
则程序输出:
79
再例如:
6
164178108109180155141159104182179118137184115124125129168196
172189127107112192103131133169158
128102110148139157140195197
185152135106123173122136174191145116151143175120161134162190
149138142146199126165156153193144166170121171132101194187188
113130176154177120117150114183186181100163160167147198111119
105120
资源约定:
峰值内存消耗(含虚拟机)<
64M
CPU消耗<
2000ms
请严格按要求输出,不要画蛇添足地打印类似:
“请您输入...”的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。
不要使用jdk1.6及以上版本的特性。
主类的名字必须是:
Main,否则按无效代码处理。
8.程序设计(满分10分)
带分数
100可以表示为带分数的形式:
100=3+69258/714
还可以表示为:
100=82+3546/197
注意特征:
带分数中,数字1~9分别出现且只出现一次(不包含0)。
类似这样的带分数,100有11种表示法。
题目要求:
从标准输入读入一个正整数N(N<
1000*1000)
程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。
不要求输出每个表示,只统计有多少表示法!
100
程序输出:
11
105
3000ms
9.程序设计(满分17分)
剪格子
如图p1.jpg所示,3x3的格子中填写了一些整数。
我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60。
本题的要求就是请你编程判定:
对给定的mxn的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。
如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。
如果无法分割,则输出0
程序输入输出格式要求:
程序先读入两个整数mn用空格分割(m,n<
10)
表示表格的宽度和高度
接下来是n行,每行m个正整数,用空格分开。
每个整数不大于10000
在所有解中,包含左上角的分割区可能包含的最小的格子数目。
33
10152
20301
123
3
43
1111
130802
111100
10
(参见p2.jpg)
5000ms
10.程序设计(满分27分)
大臣的旅费
很久以前,T王国空前繁荣。
为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。
为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。
同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。
J是T国重要大臣,他巡查于各大城市之间,体察民情。
所以,从一个城市马不停蹄地到另一个城市成了J最常做的事情。
他有一个钱袋,用于存放往来城市间的路费。
聪明的J发现,如果不在某个城市停下来修整,在连续行进过程中,他所花的路费与他已走过的距离有关,在走第x千米到第x+1千米这一千米中(x是整数),他花费的路费是x+10这么多。
也就是说走1千米花费11,走2千米要花费23。
J大臣想知道:
他从某一个城市出发,中间不休息,到达另一个城市,所有可能花费的路费中最多是多少呢?
输入格式:
输入的第一行包含一个整数n,表示包括首都在内的T王国的城市数
城市从1开始依次编号,1号城市为首都。
接下来n-1行,描述T国的高速路(T国的高速路一定是n-1条)
每行三个整数Pi,Qi,Di,表示城市Pi和城市Qi之间有一条高速路,长度为Di千米。
输出格式:
输出一个整数,表示大臣J最多花费的路费是多少。
样例输入:
5
122
131
245
254
样例输出:
135
样例说明:
大臣J从城市4到城市5要花费135的路费。
根据资源限制尽可能考虑支持更大的数据规模。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 预赛 Java 本科