湖南工业大学创新实验室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; }