2000年全国青少年信息学(计算机)奥林匹克分区联赛复赛试题
(高中组 竞赛用时: 3小时)
题一 进制转换 (18分)
问题描述:
我们可以用这样的方式来表示一个十进制数:将每个阿拉伯数字乘以一个以该数字所处位置的(值减 1)
为指数,以 10为底数的幂之和的形式。例如, 123可表示为 1*10^2+2*10^1+3*10^0这样的形式。与之相
似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值 -1)为指数,以 2
为底数的幂之和的形式。一般说来,任何一个正整数 R或一个负整数 -R都可以被选来 作为一个数制系统的
基数。如果是以 R或-R为基数,则需要用到的数码为 0,1,....R-1。例如,当 R=7时,所需用到的数码
是0,1,2,
3,4,5和6,这与其是 R或-R无关。如果作为基数的数绝对值超过 10,则为了表示这些数码,通常使用
英文字母来表示那些大于 9的数码。例如对 16进制数来说,用 A表示10,用B表示11,用C表示12,用
D表示13,用E表示14,用F表示15。在负进制数中是用 -R作为基数,例如 -15(+进制)相当于 110001
(-2进制),并且它可以被表示为 2的幂级数的和数:
110001=1*(-2)^5+1*(-2)^4+0*(-2)^3+0*(-2)^2+0*(-2)^1+1*(-2)^0
问题求解:
设计一个程序,读入一个十进制数的基数和一个负进制数的基数,并将此十进制数转换为此负进制下的数:
-R∈{-2,-3,-4,....-20}
输入:
输入的每行有两个输入数据。
第一个是十进制数 N(-32768<=N<=32767); 第二个是负进制数的基数 -R。
输出:
结果显示在屏幕上,相对于输入,应输出此负进制数及其基数,若此基数超过 10,
则参照16进制的方式处理。
样例:
输入
30000 -2
-20000 -2
28800 -16
-25000 -16
输出
30000=11011010101110000(base -2)
-20000=1111011000100000(base -2)
28800=19180(base -16)
-25000=7FB8(base -16)
题二 乘积最大 (22分)
问题描述:
今年是国际数学联盟确定的“ 2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰 90周年。
在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活 动,你的一个好朋友 XZ也有幸
得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目 :
设有一个长度 N的数字串,要求选手使用 K个乘号将它分成 K+1个部分,找出一种分法,使得这 K+1个部
分的乘积能够为最大。
同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:
有一个数字串 : 312,当N=3,K
NOIP2000提高组复赛试题,2000年NOIP信息学奥赛提高组复赛C++真题