#35364: 看很多人AC了還是不知道為甚麼 解釋一下好了


jeremydingeric@gmail.com (164253)


題目要我們輸入一個number_flags 必須是正整數 而且範圍是int

要讓account_balance>=100000

照程式碼計算是1100(account_balance初值)-900*number_flags(就是total_cost)要>=100000

所以要number_flags*900+98900<=0

乍看之下不可能 但這畢竟是CTF題 所以猜一下就會發現要靠溢位達到 只要左半溢位就能<=0了

變成number_flags*900+98900>=2147483647

得到number_flags>=(2147483647-98900)/900≈2385983.05 取2385984就行了

不過要注意不要取太大 讓他又回到正的 像是4772076