1 条题解
-
1
题意分析
. 问题描述:将位二进制字符串(如)转换为点分十进制IP地址。
. 核心规则: 每位为一组(称为一个“八位组”),共组。
每组二进制转换为十进制(范围),用点号.连接。
. 输入输出:
输入:第一行为测试用例数N,随后行每行为位二进制字符串。
输出:行对应的点分十进制IP地址。
解题思路
. 分割二进制字符串: 将位字符串均分为段,每段位。例如: $binary ="11000000101010000000000100000001" octets = [binary[i*8:(i+1)*8] for i in range(4)] $
. 二进制转十进制:
对每个位二进制,按权值展开求和。权值为到(即。
. 组合结果:
将个十进制数以点号连接,如
标程
#include<iostream> #include<cmath> using namespace std; int bin[10] = {128, 64, 32, 16, 8, 4, 2, 1}; int main() { int n,sum,i,j; char a[33]; cin>>n; while(n--) { i=0; cin>>a; while(i<32) { sum = 0; for(j=i%8;j<8;j++) { if(a[i] == '1') sum+=bin[j]; i++; } cout<<sum; if(i!=32) cout<<"."; } cout<<endl; } return 0; }
- 1
信息
- ID
- 1106
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者