FZU みねちゃんの修罗场(从一堆出现三次的数中找出出现两次的数)
みねちゃんの修罗场
Time Limit: 5000 mSec Memory Limit: 1024 KB
Description
みねちゃん是个成绩优秀大学二年级学生,本来是和像自己妹妹一般的青梅竹马一起过着普通的大学生活的,但某天却被校内公认的第一美人表白了。然而她的真实意图却是为了骗过众人而需要みねちゃん与她假扮情侣。被掌握了自己的某个“秘密”的みねちゃん被迫假扮“男友”这一角色……然而在此之后他的“未婚妻”也加入了进来,围绕みねちゃん的壮烈修罗场就此拉开帷幕!(这个剧本怎么这么眼熟。。。)又是一年的情人节,为了不误入柴刀END,みねちゃん必须要给三个“女友”送三份一模一样的礼物(开后宫的难度真是大啊~)。作为一个土豪,みねちゃん自然是买了好多好多的东西准备送给三个妹子,然而当买好的东西送到家时,みねちゃん一眼发现东西少了一件!みねちゃん在X东下了N份订单,每份订单包括一模一样的3件礼物,(有可能会多次购买同一种的礼物)结果只送了3*N-1件来。可惜的是,みねちゃん只能一眼看出礼物少了一件,并不能看出少的到底是哪一种,现在只好委托你根据每件物品的编号来检查一下,到底是哪一种少送了一件(数量不是3的倍数)。你问我为什么他不自己检查?拜托,人家可是有三个妹子的,怎么可能有那么多空闲时间,所以这种无聊的事情还是交给你好了~
Input
第一行一个整数N,即みねちゃん一共订购了N份礼物接下来3*N-1个数,表示送来的物品的物品编号。由于X东物品种类丰富,物品编号均为十位的十进制整数,可能会有前导零。编号间可能有换行。输入文件保证不大于64M。
Output
一个数,表示缺少的那件礼物的订单号。记得换行。
Sample Input
2
0000000001 0000000002 0000000002 0000000001 0000000002
Sample Output
0000000001
简易版本:
有一个数字出现1次,其他都出现两次,找出出现1次的数
解决方案:对所有数都异或一下。
算法原理:任何数异或0值不变,任何数与自己异或值为0。
思路一:
把每个数字拆成若干位,每位就开数组统计一下该位出现的次数,然后把取模3为2的几位拿出来在合并一下。
#include<iostream>
#include<cstdio>
using namespace std;
int pow(int x,int n)
{
int res = 1;
while (n>0)
{
if (n&1)
{
res = res*x;
}
x *= x;
n >>= 1;
}
return res;
}
int main()
{
int N;
while (~scanf("%d",&N))
{
int bitset[40] = {0};
int tmp,res = 0,cnt = 0;
for (int i = 0;i < 3*N-1;i++)
{
scanf("%d",&tmp);
cnt = 0;
while (tmp)
{
bitset[cnt++] += tmp%2;
tmp /= 2;
}
}
for (int i = 0;i < 33;i++)
{
if (bitset[i]%3==0)
{
bitset[i] = 0;
}
}
for (int i = 0;i < 33;i++)
{
if (bitset[i])
{
res += pow(2,i);
}
}
printf("%010d\n",res);
}
return 0;
}
思路二:利用位运算(暂时没理清,位运算硬伤)
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int N;
while (scanf("%d",&N))
{
int a,a1,a2,a3;
a1 = a2 = 0;
for (int i =0;i < 3*N-1;i++)
{
scanf("%d",&a);
a2 |= a1&a; //更新出现两次的
a1 ^=a; //更新出现一次的,同时会抹掉第一位
a3 = ~(a1&a2); //找出没有出现的
a1 &= a3; //从第一位抹掉
a2 &= a3; //从第二位抹掉
}
printf("%010d\n",a2);
}
return 0;
}
FZU みねちゃんの修罗场(从一堆出现三次的数中找出出现两次的数)的更多相关文章
- ytu 1061: 从三个数中找出最大的数(水题,模板函数练习 + 宏定义练习)
1061: 从三个数中找出最大的数 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 154 Solved: 124[Submit][Status][We ...
- C语言:对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中。-在数组中找出最小值,并与第一个元素交换位置。
//对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中. #include <stdio.h& ...
- 3sum(从数组中找出三个数的和为0)
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...
- 《剑指offer》第三_一题(找出数组中重复的数字,可改变数组)
// 面试题3(一):找出数组中重复的数字 // 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字是重复的,但不知道有几个数字重复了, // 也不知道每个数字重复了几次.请 ...
- 通过代码审计找出网站中的XSS漏洞实战(三)
一.背景 笔者此前录制了一套XSS的视频教程,在漏洞案例一节中讲解手工挖掘.工具挖掘.代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完,内容有一些关联性,其中手工XSS挖掘篇地址为 ...
- 设计模式(三):“花瓶+鲜花”中的装饰者模式(Decorator Pattern)
在前两篇博客中详细的介绍了"策略模式"和“观察者模式”,今天我们就通过花瓶与鲜花的例子来类比一下“装饰模式”(Decorator Pattern).在“装饰模式”中很好的提现了开放 ...
- 条形码的应用三-----------从Excel文件中读取条形码
条形码的应用三------从Excel文件中读取条形码 介绍 上一篇文章,我向大家展示了生成多个条形码并存储到Excel文件中的一个方法.后来我又有了个想法:既然条码插入到excel中了,我可不可以从 ...
- [老老实实学WCF] 第三篇 在IIS中寄存服务
老老实实学WCF 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我 ...
- 二维图形的矩阵变换(三)——在WPF中的应用矩阵变换
原文:二维图形的矩阵变换(三)--在WPF中的应用矩阵变换 UIElement和RenderTransform 首先,我们来看看什么样的对象可以进行变换.在WPF中,用于呈现给用户的对象的基类为Vis ...
随机推荐
- opencv6.2-imgproc图像处理模块之图像尺寸上的操作及阈值
接opencv6.1-imgproc图像处理模块之平滑和形态学操作,顺带说一句在opencv中的in-place操作就是比如函数的输入图像和输出图像两个指针是相同的,那么就是in-place操作了.比 ...
- JavaScript 位运算总结&拾遗
最近补充了一些位运算的知识,深感位运算的博大精深,此文作为这个系列的总结篇,在此回顾下所学的位运算知识和应用,同时也补充下前文中没有提到的一些位运算知识. 把一个数变为大于等于该数的最小的2的幂 一个 ...
- AR播放器
一.项目需求 AR播放器:将一系列带透明通道的图片以一定的帧率连续显示,叠加载摄像头采集的画面之上,并播放声音. 此为最初级的AR技术,因为画面是事先渲染好的,固定不变的,所以实际上并不能实现“互动” ...
- des解密不完整,前面几位是乱码的解决办法
在工作中遇到的Des解密问题,第三方发来的数据需要我们进行des解密,但是解密的结果前几位始终是乱码.废了半天劲,终于找到了问题所在. 下面先介绍一下des,了解des的同学可以直接看下面的解决办法. ...
- Javascript中的循环变量声明,到底应该放在哪儿?
相信很多Javascript开发者都在声明循环变量时犹豫过var i到底应该放在哪里:放在不同的位置会对程序的运行产生怎样的影响?哪一种方式符合Javascript的语言规范?哪一种方式和ecma标准 ...
- 浅析手机抓包方法实践(zt)
原文:http://drops.wooyun.org/tips/12467 0x00 摘要 在移动逆向分析以及 App 开发的时候,总会需要对其网络行为进行监控测试,本文总结一些抓包思路,并对其使用方 ...
- kmp模板,线性完成pos
var p:..] of longint; i,j:longint; a,b:ansistring; begin readln(a); readln(b); P[]:=; j:=; to length ...
- 认真地搭建python开发环境
面对不同python不同的版本以及各种各样的三方库,为了以后有必要学习一下怎样更好地搭建开发环境. python 2.7 作为控制台脚本 pycharm下: python 3.4 python 2.7 ...
- 常用数据库高可用和分区解决方案(2) — MongoDB篇
MongoDB是当前比较流行的文档型数据库,其拥有易使用.易扩展.功能丰富.性能卓越等特性.MongoDB本身就拥有高可用及分区的解决方案,分别为副本集(Replica Set)和分片(shardin ...
- Beta版本冲刺———第三天
会议照片: 项目燃尽图: 1.项目进展: 今天解决的进度:对游戏结束的检测进行了完善,使分数标签和最高分标签的变化更加合理. 仍在进行对排行榜分数变更的实现 2.每个人每天做的事情 郭怡锋:汇总工作进 ...