信息学奥林匹克竞赛
一、问题求解(每题5分,共10分)
1. (寻找假币问题)现有80枚硬币,其中有一枚是假币,其重量稍轻,所有真币的重量都相同,如果使用不带砝码的天平称重,最少需要称几次,就可以找出假币?请指出第一次的分组称重方法。
[4次,27 27 26]
2. 父子年龄之和50岁,再过5年父亲年龄是儿子的4倍,父亲和儿子现在各多少岁?[43 7]
3.有红、黄、黑、白四色球各一个,放置在一个内存编号为1、2、3、4四个格子的盒中,每个格子放置一只球,它们的顺序不知。甲、乙、丙三人猜测放置顺序如下:
甲:黑编号1,黄编号2; 乙:黑编号2,白编号3; 丙:红编号2,白编号4。结果证明甲乙丙三人各猜中了一半,写出四色球在盒子中放置情况及推理过程。
4. 有一个两位数,加6后再把个位数与十位数互换,得到一个新的两位数,这样加6再互换共三次后,又得到了原来的两位数,求原来的两位数. [ 19, 52, 85 ]
5. 如果一个自然数的数字之积加上这些数字之和正好等于这个自然数,我们称这样的自然数为"巧数",求100以内的所有巧数. [19,29,39,49,59,69,79,89,99 ]
6.有一个数字各不相同的三位数,如果将此数码重新排列,必可得到一个最大数和一个最小数,此两数之差正好就是原来的三位数,求这个三位数. [ 495 ]
7. 把一个两位素数写在另一个两位素数后面,得到一个四位数.它能被这两个素数之和的一半整除,求出所有这样的素数对. [ 53,13; 47,19; 43,23; 37,29 ]
8.从小到大找出五个素数,使后面的数比前面的数都大12. [ 5,17,29,41,53 ]
9.求1--200之间,有多少个连续的自然数之和等于555,把这样的数组分别打印出来.
[ 共6组: 4-33, 30-44, 51-60, 90-95, 109-113, 184-186 ]
10.某路公共汽车包括起始站和终点站共有15个车站,有一辆车除终点外,每一站上车的乘客中都恰好有一位乘客到以后的每一站下车,为了使每一位乘客都有座位,问这辆公共汽车最少要有多少个座位?这趟车共售出多少张票? [ 56 , 105 ]
11.A,B,C三人分24个苹果,每人所得个数等于三年前他们的年龄数.如果C把所得苹果的一半平分给A 和B,然后B再把现有苹果的一半平分给A和C;最后A再把现有苹果的一半平分给B和C,这时每人的苹果数恰好相等.求现在三人的年龄个是多少岁?[ 16, 10, 7]
12.蜘蛛有8条腿,蜻蜓有6条腿和2对翅,蝉有6条腿和1对翅. 三种虫子共18只,共有118条腿和20对翅.问每种虫子各几只? [ 5, 7, 6 ]
13. 甲,乙两数的和为168,甲数的八分之一与乙数的四分之三的和为76,求甲,乙两数各是多少?
[ 80, 88 ]
14. 我国古代数学问题:1兔换2鸡,2兔换3鸭,5兔换7鹅.某人用20只兔换得鸡.鸭.鹅共30只,问其
中鸡.鸭.鹅各几只? [ 2,21,7 ; 4,12,14 ; 6,3,21 ]
15.将下图中8个字母换成1-8这8个不相同的数,使其四个算式成立.
[ 8 7 1 5 6 3 2 4 6 5 1 7 8 4 2 3]
A - B = C C + D = E G * F = E A / G = H
15. 有一本小册子,中间撕去一页后,剩下的各页码之和为90, 求:(1)这本小册子共有多少页? (2)撕下
的那页的两个页码是几? [ 7 ; 7, 8 ]
16. 甲,乙两港口距离不超过5000公里,有三只轮船于某天零时同时从甲港开往乙港,设三只船都以匀速
24小时不停地航行,若干天后零时第一只船到达乙港,几天后18时,第二只船也到达,再过几天后8时,第三只船也到达,假定三只船每天的航速分别为300公里/天,240公里/天,180公里/天, 问甲乙两港实际的距离多少公里? 三只船各走了多少时间?
[ 3300公里 ; 11天, 13天18小时, 18天8小时 ]
17. 环绕大厅有七盏电灯A,B,C,D,E,F,G,各自装有一个拉线开关,开始时只有A,C,E,G四盏灯亮着,一
个小孩从A灯开始顺次拉一下开关,问当他拉了1000次开关后,最后都有哪几盏灯是亮着的?
18. 一木板高110厘米,有个小虫由地面向上爬,每分钟爬上50厘米,每爬1分钟就要休息1分钟,在这休息时间内下滑30厘米,当小虫爬到顶部还要休息2分钟,再按原路爬回地面,问共用多少分钟? [ 10 ]
19. 一个椭园形跑道周长为400米,甲,乙两人同时从一个起跑点向相反的方向绕跑道慢跑,已知甲每秒
跑5米,乙每秒跑3米,问他们两人在跑道上分别5次相遇时,每次各距起跑点多远?(取距起跑点近的距离)
20、某老者和他的孙子同生于20世纪,他们年龄相差60岁,若把他们出生年份被3,4,5,6除,余数分别
是1,2,3,4. 编程求出老者和他的孙子各自出生的年份.[ 1918, 1978 ]
21、自然数被3,4,5除都余1,被7除余2,此数最小是几? [ 121 ]
22、学生排队:设有6名学生,按身高上升次序排列,他们是A,B,C,D,E,F。现在要把他们排成两
行三列,要求每行(从左到右)每列(从上到下)都采取身高上升次序。
问:有多少种不同的排队方法?
23、跳:在一个数字序列中,任何相邻两位不同,就有一个跳。例如1122122中有3个跳。
问:在由三个1和三个2构成的所有6位数列中,跳为3的共有多少个?
112212 221121 212211 121122
3.在a,b,c,d,e,f六件物品中,按下面的条件能选出的物品是:
(1)a,b两样至少有一样 (2)a,d不能同时取 (3)a,e,f中必须有2样
(4)b,c要么都选,要么都不选 (5)c,d两样中选一样 (6)若d不选,则e也不选
4.下图中用点表示城市,点与点之间的连线表示城市之间的道路:
问:(1)能否找到一条从A城市出发,经过途中所有道路一次后又回到出发点的通路来?若能则写出通路,否则说理由。
(2)能否从A城市出发,找出去每个城市且只去一次的通路来?若能则写出通路,否则说明理由。
三.程序阅读理解:(每题8分,共32分)
1. 阅读下列程序段,写出程序段运行后x变量的值。
x1=3
x2=8
for i=1 to 5
x=(x1+x2)*2
x1=x2
x2=x
next i
print x
运行结果:______________________
2. 下列if语句中,end if表示相应if的结束:
y=0
if x
y=5
else if x
y=10
else if x
y=100
end if
else y=200
endif
endif
x=80时运行的结果为_____________;x=5时结果为_____________。
3. input p,n,q
j=21
do while n>0 A F D B C
j=j-1: a(j)=n mod 10: n=n \ 10
loop
s=0
for i=j to 20
s=s*p+a(i)
next i
print s
j=21
do while s>0
j=j-1: a(j)=s mod q: s=s \ q
loop
for i=j to 20
print a(i);
next i
输入:7,3051,8
输出: ___________________
4. DIM A(8)
FOR K=1 TO 8
F=K MOD 2
IF F=0 THEN A(K)=0 ELSE A(K)=1
FOR J=1 TO K
IF F=0 THEN A(K)=A(K)+J ELSE A(K)=A(K)*J
NEXT J
NEXT K
FOR J=1 TO 8
PRINT A(J);
NEXT J
END
输出:______________________
四.程序完善:(每个点2分,共28分)
1. 【问题描述】打印输出如图所示的拐角方阵:
【程序清单】
n=5
for i=1 to n
for j=1 to n
if then k=i else k=
print tab (j*4);k;
next j
③
next i
end
图示:
1 1 1 1 1
2 2 2 2 1
3 3 3 2 1
4 4 3 2 1
5 4 3 2 1
2. 【问题描述】求出所有满足下列条件的两位数:将此两位数的个位数与十位数进行交换,可得到一
个新的数,要求新数与原数之和小于100。程序要求每行输出6个满足条件的数。
【程序清单】
k=0
for i=① to 99
x=②
y=③
j=x*10+y
if ④ then
k=k+1
print i
⑤ then print
end if
next i
3. 【问题描述】本程序对随机产生的100个0到50之间的随机整数用一个数组存放后进行
排序,然后再将其中重复出现的数进行删除,只保留一个,使得剩下的数中任何两个都不相同且连续存储在原数组中。
【程序清单】
maxn=100
dim a(maxn)
for i=1 to maxn
a(i)=INT(rnd(1)*51)
next i
if a(i)
next j
next i
for i=2 to maxn
(i)=-a(i)
next i
tail=0
current=1
DO while a(current)
current=current+1
LOOP
tail=tail+1
a(tail)current=current+1
LOOP
if
then tail=tail+1: a(tail)=0
for i=1 to tail
print a(i)
next i
信息学奥林匹克竞赛
一、问题求解(每题5分,共10分)
1. (寻找假币问题)现有80枚硬币,其中有一枚是假币,其重量稍轻,所有真币的重量都相同,如果使用不带砝码的天平称重,最少需要称几次,就可以找出假币?请指出第一次的分组称重方法。
[4次,27 27 26]
2. 父子年龄之和50岁,再过5年父亲年龄是儿子的4倍,父亲和儿子现在各多少岁?[43 7]
3.有红、黄、黑、白四色球各一个,放置在一个内存编号为1、2、3、4四个格子的盒中,每个格子放置一只球,它们的顺序不知。甲、乙、丙三人猜测放置顺序如下:
甲:黑编号1,黄编号2; 乙:黑编号2,白编号3; 丙:红编号2,白编号4。结果证明甲乙丙三人各猜中了一半,写出四色球在盒子中放置情况及推理过程。
4. 有一个两位数,加6后再把个位数与十位数互换,得到一个新的两位数,这样加6再互换共三次后,又得到了原来的两位数,求原来的两位数. [ 19, 52, 85 ]
5. 如果一个自然数的数字之积加上这些数字之和正好等于这个自然数,我们称这样的自然数为"巧数",求100以内的所有巧数. [19,29,39,49,59,69,79,89,99 ]
6.有一个数字各不相同的三位数,如果将此数码重新排列,必可得到一个最大数和一个最小数,此两数之差正好就是原来的三位数,求这个三位数. [ 495 ]
7. 把一个两位素数写在另一个两位素数后面,得到一个四位数.它能被这两个素数之和的一半整除,求出所有这样的素数对. [ 53,13; 47,19; 43,23; 37,29 ]
8.从小到大找出五个素数,使后面的数比前面的数都大12. [ 5,17,29,41,53 ]
9.求1--200之间,有多少个连续的自然数之和等于555,把这样的数组分别打印出来.
[ 共6组: 4-33, 30-44, 51-60, 90-95, 109-113, 184-186 ]
10.某路公共汽车包括起始站和终点站共有15个车站,有一辆车除终点外,每一站上车的乘客中都恰好有一位乘客到以后的每一站下车,为了使每一位乘客都有座位,问这辆公共汽车最少要有多少个座位?这趟车共售出多少张票? [ 56 , 105 ]
11.A,B,C三人分24个苹果,每人所得个数等于三年前他们的年龄数.如果C把所得苹果的一半平分给A 和B,然后B再把现有苹果的一半平分给A和C;最后A再把现有苹果的一半平分给B和C,这时每人的苹果数恰好相等.求现在三人的年龄个是多少岁?[ 16, 10, 7]
12.蜘蛛有8条腿,蜻蜓有6条腿和2对翅,蝉有6条腿和1对翅. 三种虫子共18只,共有118条腿和20对翅.问每种虫子各几只? [ 5, 7, 6 ]
13. 甲,乙两数的和为168,甲数的八分之一与乙数的四分之三的和为76,求甲,乙两数各是多少?
[ 80, 88 ]
14. 我国古代数学问题:1兔换2鸡,2兔换3鸭,5兔换7鹅.某人用20只兔换得鸡.鸭.鹅共30只,问其
中鸡.鸭.鹅各几只? [ 2,21,7 ; 4,12,14 ; 6,3,21 ]
15.将下图中8个字母换成1-8这8个不相同的数,使其四个算式成立.
[ 8 7 1 5 6 3 2 4 6 5 1 7 8 4 2 3]
A - B = C C + D = E G * F = E A / G = H
15. 有一本小册子,中间撕去一页后,剩下的各页码之和为90, 求:(1)这本小册子共有多少页? (2)撕下
的那页的两个页码是几? [ 7 ; 7, 8 ]
16. 甲,乙两港口距离不超过5000公里,有三只轮船于某天零时同时从甲港开往乙港,设三只船都以匀速
24小时不停地航行,若干天后零时第一只船到达乙港,几天后18时,第二只船也到达,再过几天后8时,第三只船也到达,假定三只船每天的航速分别为300公里/天,240公里/天,180公里/天, 问甲乙两港实际的距离多少公里? 三只船各走了多少时间?
[ 3300公里 ; 11天, 13天18小时, 18天8小时 ]
17. 环绕大厅有七盏电灯A,B,C,D,E,F,G,各自装有一个拉线开关,开始时只有A,C,E,G四盏灯亮着,一
个小孩从A灯开始顺次拉一下开关,问当他拉了1000次开关后,最后都有哪几盏灯是亮着的?
18. 一木板高110厘米,有个小虫由地面向上爬,每分钟爬上50厘米,每爬1分钟就要休息1分钟,在这休息时间内下滑30厘米,当小虫爬到顶部还要休息2分钟,再按原路爬回地面,问共用多少分钟? [ 10 ]
19. 一个椭园形跑道周长为400米,甲,乙两人同时从一个起跑点向相反的方向绕跑道慢跑,已知甲每秒
跑5米,乙每秒跑3米,问他们两人在跑道上分别5次相遇时,每次各距起跑点多远?(取距起跑点近的距离)
20、某老者和他的孙子同生于20世纪,他们年龄相差60岁,若把他们出生年份被3,4,5,6除,余数分别
是1,2,3,4. 编程求出老者和他的孙子各自出生的年份.[ 1918, 1978 ]
21、自然数被3,4,5除都余1,被7除余2,此数最小是几? [ 121 ]
22、学生排队:设有6名学生,按身高上升次序排列,他们是A,B,C,D,E,F。现在要把他们排成两
行三列,要求每行(从左到右)每列(从上到下)都采取身高上升次序。
问:有多少种不同的排队方法?
23、跳:在一个数字序列中,任何相邻两位不同,就有一个跳。例如1122122中有3个跳。
问:在由三个1和三个2构成的所有6位数列中,跳为3的共有多少个?
112212 221121 212211 121122
3.在a,b,c,d,e,f六件物品中,按下面的条件能选出的物品是:
(1)a,b两样至少有一样 (2)a,d不能同时取 (3)a,e,f中必须有2样
(4)b,c要么都选,要么都不选 (5)c,d两样中选一样 (6)若d不选,则e也不选
4.下图中用点表示城市,点与点之间的连线表示城市之间的道路:
问:(1)能否找到一条从A城市出发,经过途中所有道路一次后又回到出发点的通路来?若能则写出通路,否则说理由。
(2)能否从A城市出发,找出去每个城市且只去一次的通路来?若能则写出通路,否则说明理由。
三.程序阅读理解:(每题8分,共32分)
1. 阅读下列程序段,写出程序段运行后x变量的值。
x1=3
x2=8
for i=1 to 5
x=(x1+x2)*2
x1=x2
x2=x
next i
print x
运行结果:______________________
2. 下列if语句中,end if表示相应if的结束:
y=0
if x
y=5
else if x
y=10
else if x
y=100
end if
else y=200
endif
endif
x=80时运行的结果为_____________;x=5时结果为_____________。
3. input p,n,q
j=21
do while n>0 A F D B C
j=j-1: a(j)=n mod 10: n=n \ 10
loop
s=0
for i=j to 20
s=s*p+a(i)
next i
print s
j=21
do while s>0
j=j-1: a(j)=s mod q: s=s \ q
loop
for i=j to 20
print a(i);
next i
输入:7,3051,8
输出: ___________________
4. DIM A(8)
FOR K=1 TO 8
F=K MOD 2
IF F=0 THEN A(K)=0 ELSE A(K)=1
FOR J=1 TO K
IF F=0 THEN A(K)=A(K)+J ELSE A(K)=A(K)*J
NEXT J
NEXT K
FOR J=1 TO 8
PRINT A(J);
NEXT J
END
输出:______________________
四.程序完善:(每个点2分,共28分)
1. 【问题描述】打印输出如图所示的拐角方阵:
【程序清单】
n=5
for i=1 to n
for j=1 to n
if then k=i else k=
print tab (j*4);k;
next j
③
next i
end
图示:
1 1 1 1 1
2 2 2 2 1
3 3 3 2 1
4 4 3 2 1
5 4 3 2 1
2. 【问题描述】求出所有满足下列条件的两位数:将此两位数的个位数与十位数进行交换,可得到一
个新的数,要求新数与原数之和小于100。程序要求每行输出6个满足条件的数。
【程序清单】
k=0
for i=① to 99
x=②
y=③
j=x*10+y
if ④ then
k=k+1
print i
⑤ then print
end if
next i
3. 【问题描述】本程序对随机产生的100个0到50之间的随机整数用一个数组存放后进行
排序,然后再将其中重复出现的数进行删除,只保留一个,使得剩下的数中任何两个都不相同且连续存储在原数组中。
【程序清单】
maxn=100
dim a(maxn)
for i=1 to maxn
a(i)=INT(rnd(1)*51)
next i
if a(i)
next j
next i
for i=2 to maxn
(i)=-a(i)
next i
tail=0
current=1
DO while a(current)
current=current+1
LOOP
tail=tail+1
a(tail)current=current+1
LOOP
if
then tail=tail+1: a(tail)=0
for i=1 to tail
print a(i)
next i