【2015广东工业大学新生赛E】【c++函数 bitset读入二进制转十进制数】GDUT的实验室 十进制与二进制的比较

来源:互联网 发布:数组长度限制 编辑:程序博客网 时间:2024/05/16 09:28
#include<stdio.h>#include<iostream>#include<string.h>#include<string>#include<ctype.h>#include<math.h>#include<set>#include<map>#include<vector>#include<queue>#include<bitset>#include<algorithm>#include<time.h>using namespace std;void fre(){freopen("c://test//input.in","r",stdin);freopen("c://test//output.out","w",stdout);}#define MS(x,y) memset(x,y,sizeof(x))#define MC(x,y) memcpy(x,y,sizeof(x))#define MP(x,y) make_pair(x,y)#define ls o<<1#define rs o<<1|1typedef long long LL;typedef unsigned long long UL;typedef unsigned int UI;template <class T1,class T2>inline void gmax(T1 &a,T2 b){if(b>a)a=b;}template <class T1,class T2>inline void gmin(T1 &a,T2 b){if(b<a)a=b;}const int N=0,M=0,Z=1e9+7,ms63=1061109567;int casenum,casei;UI a[4];bitset<32>b[4];bool check(){for(int i=0;i<4;++i)if(a[i]!=b[i].to_ulong())return 0;return 1;}int main(){scanf("%d",&casenum);for(casei=1;casei<=casenum;++casei){for(int i=0;i<4;++i)scanf("%u%*c",&a[i]);for(int i=0;i<4;++i)cin>>b[i],cin.get();puts(check()?"Yes":"No");}return 0;}/*【trick&&吐槽】bitset读入二进制数很棒哦~c++的读入——数据按十进制输入输出。如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。即cin>>oct(hex)>>xc的读入——%o 读入八进制数%x 读入十六进制数【题意】192.168.1.111000000.10101000.00000001.0000000165.254.63.12201000001.11111110.00111111.01111011给你二进制IP编码和十进制IP编码,让你判断两者是否一致。【类型】简单模拟 bitset【分析】这题可以按位模拟,把二进制转化为数值。当然也可以利用bitset,让系统帮你转,2333!我们可以直接用bitset读入二进制位。而且,bitset的读入可以看做是从右往左读的,哎呀,不管是怎么读入的,总之,从结果上看,就是——b[0]是最低位。然后,我们可以使得bitset转化为一个数。具体函数包括——bitset.to_string()bitset.to_ulong()bitset.to_ullong()总之几行代码就可以AC啦!*/

0 0
原创粉丝点击