输入数据 输入包含多组测试数据,每组占一行,由若干位01串组成。 输出数据 对于每组输入数据,若为一个合法的二进制IP地址串,请输出转换后的十进制IP地址,否则输出Invalid。每一组输出占一行
时间: 2024-05-14 21:17:01 浏览: 40
好的,我明白了。对于你的第一个问题,我来解答。
可以使用以下步骤来判断一个字符串是否为合法的二进制IP地址:
1. 将字符串按照 "." 分割为四个子串。
2. 判断每个子串是否符合二进制数的规则,即只含有 0 和 1,且长度不超过 8。
3. 如果所有子串都符合规则,则将它们转换为十进制数,拼接成一个十进制IP地址。
下面是 Python 代码实现:
```python
def is_binary(s):
return all(c in '01' for c in s) and len(s) <= 8
def binary_to_decimal(s):
return int(s, 2)
def binary_ip_to_decimal(s):
parts = s.split('.')
if len(parts) != 4:
return False
for part in parts:
if not is_binary(part):
return False
return '.'.join(str(binary_to_decimal(part)) for part in parts)
while True:
try:
s = input().strip()
result = binary_ip_to_decimal(s)
if result:
print(result)
else:
print('Invalid')
except:
break
```
这个程序可以读入多组测试数据,每组数据占一行,处理完一组数据立即输出结果,直到读入结束。
阅读全文