湖南工业大学创新实验室2015年新生赛(一)1005(重开)
Too young
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 50 Accepted Submission(s) : 20
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
IP地址有如下形式
a.b.c.d
现在给出两串IP地址,第一串的abcd都以十进制整数给出,第二串abcd都以8位二进制数给出。
判断这两个IP地址是否相同。你可以认为给出的所有IP地址都合法
难度:☆
a.b.c.d
现在给出两串IP地址,第一串的abcd都以十进制整数给出,第二串abcd都以8位二进制数给出。
判断这两个IP地址是否相同。你可以认为给出的所有IP地址都合法
难度:☆
Input
输入一个正整数t,代表测试数据组数,接下来t组数据,如样例给出
Output
相同输出Yes,不相同输出No.细节见样例
Sample Input
2 1.1.1.1 00000001.00000001.00000001.00000001 20.20.20.20 11111111.11111111.11111111.11111111
Sample Output
Yes No
Author
Source
light oj
下面化成10进制一节一节比较就行
#include<stdio.h>
//#include<bits/stdc++.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include<sstream>
#include<set>
#include<queue>
#include<vector>
#include<algorithm>
#include<limits.h>
#define inf 0x3fffffff
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
using namespace std;
int pow(int x, int n)
{
int pw = 1;
while (n > 0)
{
if (n & 1) // n & 1 等价于 (n % 2) == 1
pw *= x;
x *= x;
n >>= 1; // n >>= 1 等价于 n /= 2
}
return pw;
}
int main()
{
char a[1000];
int a1,a2,a3,a4;
int t;
int i;
int sum1,sum2,sum3,sum4;
while(cin>>t)
{
while(t--)
{
sum1=0;sum2=0;sum3=0;sum4=0;
scanf("%d.%d.%d.%d",&a1,&a2,&a3,&a4);
scanf("%s",a);
for(i=0;i<8;i++)
{
if(a[i]=='1')
{
sum1+=(pow(2,7-i));
}
}
for(i=9;i<17;i++)
{
if(a[i]=='1')
{
sum2+=(pow(2,16-i));
}
}
for(i=18;i<26;i++)
{
if(a[i]=='1')
{
sum3+=(pow(2,25-i));
}
}
for(i=27;i<strlen(a);i++)
{
if(a[i]=='1')
{
sum4+=(pow(2,34-i));
}
}
if(sum1==a1&&sum2==a2&&sum3==a3&&sum4==a4)
{
puts("Yes");
}
else
{
puts("No");
}
}
}
return 0;
}

浙公网安备 33010602011771号