蓝桥等考Python组别十八级05(罗马数字)

蓝桥等考Python组别十八级005

第一部分:选择题

1、Python L18 (15分)

运行下面程序,输入30,输出的结果是(    )。

t = int(input())

if t < 30:

    print(0)

else:

    print(t // 15 * 2)

  1. 4
  2. 10
  3. 20
  4. 30

正确答案:A

2、Python L18 (15分)

运行下面程序,输入4,输出的结果是(    )。

n = int(input())

ans = 0

for i in range(1, n + 1):

    ans += i

print(ans)

  1. 6
  2. 10
  3. 14
  4. 15

正确答案:B

3、Python L18 (20分)

运行下面程序,输入11,输出的结果是(    )。

n = int(input())

i = 0

while n > 1:

    n //= 2

    i += 1

print(i)

  1. 1
  2. 2
  3. 3
  4. 4

正确答案:C

第二部分:编程题

4、Python L18 罗马数字(50分)

题目名称:罗马数字

题目描述:

罗马数字起源于古罗马。

罗马数字的“数字”是七种字符:I、V、X、L、C、D和M,这七种字符表示的数和阿拉伯数字表示的数,对照关系如下表:

罗马数字用几个字符的组合来表示更多的数。通常情况下,代表较小数的字符在代表较大数的字符右边。例如用罗马数字表示的数中:

2写做II,即为两个I;

12写做XII,即为X加上II;

27写做XXVII,即为XX加上V加上II。

罗马数字表示数,存在一些特例。比如4不写作IIII,而是IV。字符I在字符V的左边,所表示的数等于较大数5减较小数1得到的数值4。同样地,9写作IX。有6个数遵循以下特殊写法:

I放在V的左边,表示4;

I放在X的左边,表示9;

X放在L的左边,表示40;

X放在C的左边,表示90;

C放在D的左边,表示400;

C放在M的左边,表示900。

输入一个正整数,将其转为用罗马数字表示的数。

输入:

一个正整数x(1<=x<=3999)。

输出:

一个字符串代表x转换后的,用罗马数字表示的数。

输入样例1:

27

输出样例1:

XXVII

输入样例2:

43

输出样例2:

XLIII

参考程序1:

v = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]

s = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]

n = int(input())

ans = ''

for i in range(13):

    while n >= v[i]:

        ans += s[i]

        n -= v[i]

print(ans)

参考程序2:

m = [

['', 'M', 'MM', 'MMM'],

['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'],

['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],

['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']

]  #第一维数组分别对应千百十个,当对应位置没有值时,空字符与其对应。后面的十个字符一一对应每个位置的“一到十”

d = [1000, 100, 10, 1]  #每个位置的除数

x = int(input())

r = ''

for k, v in enumerate(d):

    r += m[k][int(x / v)]

    x = x % v

print(r)

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值