hdu 5980 Find Small A(位运算思维)

来源:互联网 发布:淘宝买家常问问题 编辑:程序博客网 时间:2024/06/11 03:33

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5980

题目大意:

给N个数 每个数都可以拆开成一个32位的2进制 每八位一个字节  每个字节的2进制数换算成十进制的看有多少个97

题目思路:

一开始读题确实懵,但是理解题意后变得简单了不少,即利用位运算,每八位进行判断,判断组成的数字是否为97即可。

学到的东西:

思考位运算的性质。

代码:

#include <bits/stdc++.h>using namespace std;int nn[8]={1,2,4,8,16,32,64,128};//进行赋值,每一位代表队的值为多少 int main(){int t;while(~scanf("%d",&t)){int sum=0; while(t--){int num;scanf("%d",&num);int h=4;while(h--){int tmp=0;for(int i=0;i<8;i++){if(num&1) tmp+=1*nn[i];//cout<<tmp<<endl;    num=num>>1;}if(tmp==97) sum++;tmp=0;} }cout<<sum<<endl;} }


原创粉丝点击