📜  门| Gate IT 2005 |问题22(1)

📅  最后修改于: 2023-12-03 15:42:13.956000             🧑  作者: Mango

门 | Gate IT 2005 | 问题22

该问题是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,即将字符串当作二进制数进行转换。