NBUT 2012 Summer Training -1 / [B] Birdlike Angry Pig
来源:互联网 发布:软件license怎么查看 编辑:程序博客网 时间:2024/06/14 00:48
[B] Birdlike Angry Pig
问题描述
There's no end to revenge.Pigs like to eat birds' eggs, so birds decide to revenge.For this, pigs decide to revenge as well.Pigs give a task to a birdlike pig. They let he sneak into the birds group so that they can destroy the birds group.
Every bird has a ID number (It may not be unique). To let pigs know, the birdlike pig makes the "AND operation" amount all the birds' ID number and sign himself to the answer.
For example:
Birds are signed as 5, 3, 4. So the birdlike pig signs himself as (5 & 3 & 4 = 0).
One day, a group birds pass by pigs' home. So the angry pig want to know whether the birdlike pig is in.
- 输入
- This problem has several cases. The first line of each case is an integer N (2 <= N <= 100 000).
- Then follows a line with N integers, indicates the ID of each bird/birdlike pig.
- 输出
- For each case, if you can find the birdlike pig then output the ID of birdlike pig. Or output 'CAUTION: NO BIRDLIKE'.
- 样例输入
5
4 0 3 4 5
- 样例输出
- 0
- 分析:
- 首先应该注意and运算的性质: 他有个必要条件:两个相同的数and后结果还等于那个数。因为最后就是birdlike和其他bird and 而birdlike又等于其他bird and后的结果,所以显然,如果存在birdlike,则birdlike的大小等于所有数从左往右and的结果。
- 但是这只是一个必要条件,不是充分条件,所以还需额外判断一下。(前几次提交忘了。。。T^T)比如63&7=7,可能你光看前面会觉得7是birdlike,但实际上他不是。这就需要再扫描一遍,找到“可能的”birdlike值,然后判断他到底是不是birdlike。(他本身等于除去他后剩下所有数and的结果)。
- #include <cstdio>
#include <cmath>
using namespace std;
int main()
{
int n;
int ans=0;
int a[100005];
while (scanf("%d",&n)!=EOF)
{
ans=2147483647;
for (int i=0;i<n;i++)
{
scanf("%d",&a[i]);
ans=ans&a[i];
}
int ok=0;
for (int i=0;i<n;i++)
if (a[i]==ans)
{
int nn=2147483647;
for (int j=n-1;j>=0;j--)
{
if (j!=i) nn=nn&a[j];
}
if (nn==ans)
{
printf("%d\n",ans);
ok=1;
break;
}
}
if (!ok) printf("CAUTION: NO BIRDLIKE\n");
}
return 0;
}
- NBUT 2012 Summer Training -1 / [B] Birdlike Angry Pig
- NOJ [1173] Birdlike Angry Pig
- NOJ [1173] Birdlike Angry Pig
- nbut [1173] Birdlike Angry Pig 找出某个数使得等于其它所有数的&操作
- NBUT 2012 Summer Training -1 / [E] Exchange Rate
- NBUT 2012 Summer Training - 1 / [D] Dress, Left Dress!
- ecjtu-summer training #1 B(CodeForces 651B)
- ecjtu-summer training #5 B
- ecjtu-summer training #6 B
- B - And Or---(2015 NEUQ_ACM summer training #1)
- NBUT Summer Contest-1题解报告
- B Black Square----(2015 summer training #5)
- BUPT Summer training 1 总结
- UPC 2017 Summer Training 1
- UPC 2017 Summer Training 1
- UPC 2017 Summer Training 1
- UPC 2017 Summer Training 1
- HIT summer training Contest 11 / B another number game
- Java接口特性总论
- jni中 对c++类的重新封装
- Document段 DocumentFragment
- 背包问题(01背包,完全背包,多重背包)
- apache禁止访问
- NBUT 2012 Summer Training -1 / [B] Birdlike Angry Pig
- 【字符串匹配】KMP算法之道
- Linux内核中读写文件数据的方法
- POJ 1191 棋盘分割
- 关于MediaPlayer.framework框架导入Frameworks之后.m文件中还是无法识别其中的类
- 【OpenCV】图形生成算法:多边形的扫描转换
- vs2010+Silverlight4+wcf开发部署全过程
- 如何应用Java的可变参数
- 常用