萌新刚学 OI,求助 A+B problem

P1001 A+B Problem

UperFicial @ 2021-03-13 16:48:20

RT,窝真的菜死了/kk

这个 inline int plus(register int x,register int y){return !y?x:plus(x^y,(x&y)<<1);} 东东和这个 inline int plus(register int x,register int y){return x+y;} 哪个更快啊?


by _caiji_ @ 2021-03-13 16:49:51

实践出真知

递归常数应该会大一点吧


by w23c3c3 @ 2021-03-13 16:50:13

加法好像就是上面那玩意实现的,所以应该差不多


by szTom @ 2021-03-13 17:02:04

最快的: clang+O2

永远不要以为你比编译器懂得多


by 滑蒻稽 @ 2021-03-13 17:02:46

@w23c3c3 加法编译会成汇编的几句代码啊,不是上面那玩意吧.


by UperFicial @ 2021-03-13 17:03:05

@szTom az,好吧/fad


by ud2_ @ 2021-03-13 17:10:48

GCC 还是不够聪明,即使 -O3 也不把 !y ? x : plus(x ^ y, (x & y) << 1) 优化成 x + y

plus1(int, int):
        movl    %edi, %eax
        testl   %esi, %esi
        je      .L2
.L3:
        movl    %esi, %edx
        andl    %eax, %edx
        xorl    %esi, %eax
        addl    %edx, %edx
        movl    %edx, %esi
        jne     .L3
.L2:
        ret
plus2(int, int):
        leal    (%rdi,%rsi), %eax
        ret

by _caiji_ @ 2021-03-13 20:45:36

@sjx233_ 您这么强您去写一个啊/se

比如说判断质数换成 Miller-Rabin、快速幂、去掉={0}等。


by gxxjqqiang @ 2021-03-16 17:13:17

e3cn


by CSP_zyh @ 2021-08-03 22:10:12

用c++解题很简单的


|