みねちゃんの修罗场

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 みねちゃんの修罗场(从一堆出现三次的数中找出出现两次的数)的更多相关文章

  1. ytu 1061: 从三个数中找出最大的数(水题,模板函数练习 + 宏定义练习)

    1061: 从三个数中找出最大的数 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 154  Solved: 124[Submit][Status][We ...

  2. C语言:对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中。-在数组中找出最小值,并与第一个元素交换位置。

    //对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中. #include <stdio.h& ...

  3. 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 ...

  4. 《剑指offer》第三_一题(找出数组中重复的数字,可改变数组)

    // 面试题3(一):找出数组中重复的数字 // 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字是重复的,但不知道有几个数字重复了, // 也不知道每个数字重复了几次.请 ...

  5. 通过代码审计找出网站中的XSS漏洞实战(三)

    一.背景 笔者此前录制了一套XSS的视频教程,在漏洞案例一节中讲解手工挖掘.工具挖掘.代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完,内容有一些关联性,其中手工XSS挖掘篇地址为 ...

  6. 设计模式(三):“花瓶+鲜花”中的装饰者模式(Decorator Pattern)

    在前两篇博客中详细的介绍了"策略模式"和“观察者模式”,今天我们就通过花瓶与鲜花的例子来类比一下“装饰模式”(Decorator Pattern).在“装饰模式”中很好的提现了开放 ...

  7. 条形码的应用三-----------从Excel文件中读取条形码

    条形码的应用三------从Excel文件中读取条形码 介绍 上一篇文章,我向大家展示了生成多个条形码并存储到Excel文件中的一个方法.后来我又有了个想法:既然条码插入到excel中了,我可不可以从 ...

  8. [老老实实学WCF] 第三篇 在IIS中寄存服务

    老老实实学WCF 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我 ...

  9. 二维图形的矩阵变换(三)——在WPF中的应用矩阵变换

    原文:二维图形的矩阵变换(三)--在WPF中的应用矩阵变换 UIElement和RenderTransform 首先,我们来看看什么样的对象可以进行变换.在WPF中,用于呈现给用户的对象的基类为Vis ...

随机推荐

  1. Asp.net WebApi Put模式调用,“HTTP 错误 405.0 - Method Not Allowed”解决方法

    IIS10.0在部署了WebAPI之后,默认是不支持Put模式调用的.需要按照下面方法启用. 步骤一:在IIS管理界面要支持Put模式的IIS站点,选择 "功能视图". 步骤二:选 ...

  2. python2.1-原理之琐碎技巧

    本系列依据<python学习手册第四版>而写,也算是个学习笔记吧,选择本书的原因在于它不同于第三版,它强调介绍python3.0 ,而会在不同的地方给出2.6版本的区别,:本书侧重介绍原理 ...

  3. 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

    这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...

  4. AndFix热修复 —— 实战与源码解析

    当你的应用发布后第二天却发现一个重要的bug要修复,头疼的同时你可能想着赶紧修复重新打个包发布出去,让用户收到自动更新重新下载.但是万事皆有可能,万一隔一天又发现一个急需修复的bug呢?难道再次发布打 ...

  5. HFS汉化版|简易HTTP服务器

    专为个人用户所设计的 HTTP 档案系统 - Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装,只要解压缩后执 ...

  6. 美发帮--android APP开发实战

    登陆界面,LinearLayout  ImageView  Button   用到了ImageView自动缩放,和自定义Button形状及State-Drawable,还用到了动画. 自定义控件之圆形 ...

  7. android请求root权限

    应用获取Root权限的原理:让应用的代码执行目录获取最高权限.在Linux中通过chmod 777 [代码执行目录] //请求root权限    public static boolean upgra ...

  8. .Net Core 1.0.0 RC2安装及示例教程

    前几天微软发布了.Net Core1.0.0 RC2 Preview版本,一直都想尝试下跨平台的.Net Core,一直拖到今天,也参考了下园友们的经验,闲时整理了一下安装的步骤,供大家参考. 我们要 ...

  9. 网络流HDU 2883

    建图           源点  ->     每个人  ->           每段时间      ->      汇点 时间要离散化一下 分成一些时间段 权           ...

  10. java的重写规则

    重写不能破坏父类的访问性和逻辑结构性.对于异常重写方法不能抛出新的异常或者比被重写方法声明的检查异常更广的检查异常.但是可以抛出更少,更有限或者不抛出异常. 重写规则之一:重写方法不能比被重写方法限制 ...