• 关于位运算的水题


    找数字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 }
  • 相关阅读:
    SpringMVC详解
    会话控制cookie和session
    jsp详解
    Jquery Enter事件
    JS获取request字符串
    net 2.0使用ajax
    C#通过WebClient/HttpWebRequest实现http的post/get方法
    WCF Rest:不使用UriTemplate使用post方式传参解决HTTP400问题以及参数映射问题
    关于ASP.NET 中站点地图sitemap 的使用
    Web.config自定义节点configSections
  • 原文地址:https://www.cnblogs.com/clliff/p/3810334.html
Copyright © 2020-2023  润新知