阿里云虚假分支剖析
记得加入我们的学习群:
961566389
获取最新资讯
1.a^2 + b^2 >= ab
形式
……
case 18432:
P = (fe = (Y = (Oo = 23) * Oo) + (P = (qe = 12 >> qe) * qe)) >= (Y = Oo * qe), L = w[m = L], j.push(L), li = 25664;
break;
case 25664:
w = G[I](35633, 36337), L = w[D], j.push(L), w = G[I](35633, 36337), L = w[N], j.push(L), w = G[I](35633, 36337), L = w[m], li = P ? 23107 : 13156;
break;
……
如上代码的P表达式:
fe = (Y = (Oo = 23) * Oo) + (P = (qe = 12 >> qe) * qe) >= (Y = Oo * qe)
这个表达式简化:
((Oo = 23) * Oo) + (qe = 12 >> qe) * qe) >= Oo * qe
再简化:
Oo * Oo + qe * qe >= Oo * qe
啊哈!!
这不就是基本的不等式嘛
a^2 + b^2 >= 2ab > ab
所以恒为真!!!
2.a^2 + b^2 >= 2ab
形式
P = (Oo = 30 <= Oo) * Oo, P += A = (qe = qe <= 28) * qe, fe = (bo = 1 != bo) * bo, A = (Y = 2) * Y;
化简:
P = Oo * Oo + qe * qe, fe = bo * bo, A = Y * Y;
(A = P * (fe += A)) >= (Y = (bo = (fe = Oo * bo) + (P = qe * Y)) * bo)
化简:
(Oo * Oo + qe * qe) * (bo * bo + Y * Y)
>=
(Oo * bo + qe * Y)^2
这不就是(a^2 + b2)*(c2+d^2) >= (ac+bd)^2
化简就是(ad)2+(bc)2 >= 2adbc
也就是符合x^2 + y^2 >= 2xy
3.正数和0大于等于0
((P = 3 >> P) * P) > (P = (qe = 124 | (Y = !ie)) << 25)
左边是P^2
恒大于等于0,右边是0
124|0=124
124|1=125
无论是124还是125左移25位必定为零
3. 离散之美
(x+y)^2 >=3xy (x,y属于{0,1})
4. 离散之美
(x+y)*x <=3xy (x,y属于{0,1})
(A = (bo = (Oo = Oo <= 8) + (Y = so !== pe)) * bo) >= (qe = 3 * (fe = Oo * Y))
5. 离散之美
(x+y)*x <=3xy (x,y属于{0,1})
6. 位运算
y^2 >= ((x&=31)<<31)
x&=31一定是小于等于31的数,那么(x&=31)<<31一定等于0
(Oo |= 26) * Oo) > (Y = (Oo = 1 | (A &= 31)) << 31)
7.(R = 0 | (k = R)) < 0 、 (m = 0 | (x = m)) < 16384
等等……,了解下,即可,最好用的还是,去浏览器dump每个casenum下的真假,一直为真就是真,一直为假就是假。
记得加入我们的学习群:
961566389
获取最新资讯
标签:Oo,虚假,31,bo,剖析,阿里,qe,fe,124 From: https://www.cnblogs.com/steed4ever/p/18389016