P1469 找筷子

整体来说,这个题很简单的,给我们n个数,找出这n个数里哪个数的个数是奇数

我第一想法就是桶

事实证明我的想法是对的

#include<iostream>
#include<cstdio>
using namespace std;
long long n,a[10000000],x;//这里数组要定义的大一些
int main()
{
    scanf("%lld",&n);//不用scanf的话会时间超限的
    for(int i=0;i<n;i++)
    {
        scanf("%lld",&x);
        a[x-1]+=1;//把数存到桶里
    }
    for(int i=0;i<=1000001;i++)
    {
        if(a[i]%2==1)//判断哪个是奇数
        {
            printf("%lld",i+1);//找到了就输出
            return 0;//因为不可能有第二个奇数、所以就直接结束
        }
    }
    return 0;
}

后来我发现有用异或的

那是一个好东西

#include<iostream>
#include<cstdio>
using namespace std;
int x,n,a;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
    {
        scanf("%d",&a);
        x^=a;//一行就顶了我的好几行(;´д`)ゞ
    }
    cout<<x<<endl;
    return 0;
}

^异或符号

0^0=0,0^1=1 0异或任何数=任何数

1^0=1,1^1=0 1异或任何数-任何数取反

这个比我打的桶好了千万倍不止,不过我也学到了新知识

posted @ 2020-05-08 11:55  zjy123  阅读(118)  评论(0编辑  收藏  举报
//需要jquery插件 /* 鼠标特效 */ var a_idx = 0; jQuery(document).ready(function($) { $("body").click(function(e) { var a = new Array("(❤ ω ❤)","(☆▽☆)","(●'◡'●)","(✿◡‿◡)","(*^_^*)","O(∩_∩)O","( •̀ ω •́ )✧","(o゚v゚)ノ","(~ ̄▽ ̄)~","((≧∇≦)ノ","φ(゜▽゜*)♪","U•ェ•*U"); var $i = $("").text(a[a_idx]); a_idx = (a_idx + 1) % a.length; var x = e.pageX, y = e.pageY; $i.css({ "z-index": 999999999999999999999999999999999999999999999999999999999999999999999, "top": y - 20, "left": x, "position": "absolute", "font-weight": "bold", "color": "rgb("+~~(255*Math.random())+","+~~(255*Math.random())+","+~~(255*Math.random())+")" }); $("body").append($i); $i.animate({ "top": y - 180, "opacity": 0 }, 1500, function() { $i.remove(); }); }); });