题解

101 条题解

  • 0
    @ 2009-10-30 08:30:49

    啥都不想说了,很老很老的题

  • 0
    @ 2009-10-30 08:28:31

    var i:longint;

    x,n,ans:int64;

    begin

    readln(n);

    for i:=1 to n do

    begin

    read(x);

    ans:=ans xor x;

    end;

    writeln(ans);

    end.

  • 0
    @ 2009-10-30 08:27:53

    貌似是很旧很旧的题了,matrix67神牛讲过的。

    位运算,xor秒掉,不过我倒是交了好几次,忘了输出和要用int64

    ---|---|---|---|---|---|---|---|---|---|

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

  • 0
    @ 2009-10-30 08:11:03

    不会xor的的确可以用qsort过,不会超时,记得筷子个数虽然没有int64的,但是长度有int64的。

  • 0
    @ 2009-10-30 07:25:22

    此题不错啊。

    废话不多说。

    因为只少了一支所以其他的数都是成对出现的。

    因为

    a xor a = 0

    a xor 0 = a

    所以成对出现的数异或后都变成0了(貌似异或有交换律和结合律),而单独出现的数异或0后仍为原数,这样一路异或下来就可以找出丢了的那支。

  • 0
    @ 2009-10-29 23:32:29

    不知道快排为什么WA一个点?

  • 0
    @ 2009-10-29 23:30:48

    流输入输出就是慢

  • 0
    @ 2009-10-29 22:55:19

    xor即可。。无聊题。。直接在代码框里拍的。。

    友情提示下。。要用int64。。

  • 0
    @ 2009-10-29 22:54:55

    用xor即可

    不应该难度3

  • 0
    @ 2009-10-29 22:30:34

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:运行时错误...|错误号: 106

    ├ 测试数据 05:答案正确... 134ms

    ---|---|---|---|---|---|---|---|-

    Unaccepted 有效得分:80 有效耗时:134ms

    program P1684;

    var

    m,t:longint;

    begin

    m:=0;

    readln;

    repeat

    read(t);

    m:=m xor t;

    until eof;

    writeln(m);

    end.

    神牛,救我啊!◎

  • 0
    @ 2009-10-29 22:09:00

    ...我同学快排284MS...

  • 0
    @ 2009-10-29 22:07:46

    不懂XOR的人如何解(包括我)??

    用快排,把数据排一遍,再找哪个数字出现了奇数次

    最后一个点759MS

    记得开INT64,所有的变量越大越好,数组也一样,别爆就行

  • 0
    @ 2009-10-29 22:04:16

    unsigned long long......

  • 0
    @ 2009-10-29 21:17:09

    超时....暴汗

  • 0
    @ 2009-11-03 21:05:39

    考虑把数列排序,邻接的两个之间加入XOR操作符,会发现答案出来了。因为偶数项会被消掉

    注意INT64

    接下来考虑下加强版:

    有两个数出现奇数次。

    做法:

    从头到尾异或一遍,你就得到了需要求的两个数异或后的值。这两个数显然不相等,异或出来的结果不为0。我们可以据此找出两个数的二进制表达中不同的一位, 然后把所有这n个数分成两类,在那一位上是0的分成一类,在那一位上是1的分到另一类。对每一类分别使用这个问题的算法。

  • 0
    @ 2009-10-29 21:01:00

    C++要用scanf读入……

  • 0
    @ 2009-10-29 20:51:44

    我RP太低,竟然总是超时!!!

  • 0
    @ 2009-10-29 21:18:12

    #include

    using namespace std;

    int main()

    {

    long long s=0,i,n,q;

    cin>>n;

    for(i=1;i

  • 0
    @ 2009-10-29 20:39:48

    AC人数光速飙升。

  • 0
    @ 2009-10-29 20:25:57

    #include

    using namespace std;

    unsigned long long a,n,s;

    int main ()

    {

    int i;

    cin>>n;

    s=0;

    for (i=1;i>a;

    s=s^a;

    }

    cout

信息

ID
1684
难度
5
分类
数据结构 | Hashing 点击显示
标签
递交数
3033
已通过
941
通过率
31%
被复制
5
上传者