zoukankan      html  css  js  c++  java
  • 关于位运算的水题

    找数字2

    Time Limit: 25000ms, Special Time Limit:50000ms, Memory Limit:32768KB

    Total submit users: 92, Accepted users: 67

    Problem 11466 : No special judgement

    Problem description

      给定2n+1个数字,只有一个数字出现了奇数次,其余的数字都出现了偶数次,现在你需要找出出现奇数次的数字。

    Input

      包含多组数据,每组数据第一行为一个数n(0<=n<=5000000)。接下来一行包括2N+1个数字。

    Output

      对于每组数据,输出出现奇数次的数字.

    Sample Input

    1

    1 1 1

    2

    1 2 1 3 3

    3

    1 1 2 2 3 3 4

    Sample Output

    1

    2

    4

    这是湖师大的14年校赛的一道水题

    题目的意思很清楚就是说要你在输入的数字中找出出现奇数次次数的数字

    我刚上手就是两个for的嵌套,但是给出的数据很大,所以TLE了

    后来哈德斯告诉我其实这个题目可以用位运算来做,然后我就看了看位运算

    就有:

    1^1=0 0^0=0

    1^0=1 1^0=1

    布尔型的就有:

    True ⊕ False = True
    False ⊕ True = True
    False ⊕ False = False
    True ⊕ True = False
     
    如果是两个十进制的数的话,就会把十进制的数字先转化为二进制,然后再进行异或运算,这样统计出现奇数次个数数字的问题就解决了。
     
    代码如下:
     1 #include<stdio.h>
     2 using namespace std;
     3 int main()
     4 {
     5     int n;
     6     while(scanf("%d",&n)!=EOF)
     7     {
     8         int a,b=0;
     9         for(int i=1;i<=2*n+1;i++)
    10         {
    11             scanf("%d",&a);
    12             b^=a;
    13         }
    14         printf("%d
    ",b);
    15     }
    16     return 0;
    17 }
  • 相关阅读:
    深入理解系统调用
    基于mykernel 2.0编写一个操作系统内核
    交互式多媒体图书平台的设计与实现
    Ubuntu下VSCode调试环境搭建指南-C语言篇
    码农的自我修养之必备技能 学习笔记
    工程化编程实战callback接口学习笔记
    CentOS7.4网络配置
    R-CNN
    CUDA整理
    CUDA by Example 第四章 julia集
  • 原文地址:https://www.cnblogs.com/clliff/p/3810334.html
Copyright © 2011-2022 走看看