📅  最后修改于: 2023-12-03 15:42:13.956000             🧑  作者: Mango
该问题是2005年“Gate IT”培训班的一道编程练习题,旨在让程序员练习不同数据类型之间的转换和算术运算。
给定两个整数N和M,编写程序,用N个“1”和M个“0”组成一个长度为N+M的字符串,并计算该字符串表示的十进制数。
输入包含两行,分别为N和M,整数范围都在[1,50]之间。
输出一个整数,表示组合的字符串表示的十进制数。
输入:
2
3
输出:
100
将字符串表示的二进制数转换为十进制数,可以使用数学上的数制转换公式:
$$(a_na_{n-1}...a_1a_0)2 = a_n \times 2^n + a{n-1} \times 2^{n-1} + ... + a_1 \times 2^1 + a_0 \times 2^0$$
其中,$a_n,\ a_{n-1},\ ..., \ a_1,\ a_0$ 表示二进制数每一位的值,$2^n,\ 2^{n-1},\ ..., \ 2^1,\ 2^0$ 表示每一位的权值。
因此,按照题目描述,我们可以构造出二进制字符串,然后按公式计算即可。
n = int(input())
m = int(input())
binary_str = '1' * n + '0' * m
decimal_num = int(binary_str, 2)
print(decimal_num)
注意,我们需要使用内置函数int()
,并将第二个参数指定为2,即将字符串当作二进制数进行转换。