给定一个质数p,判断p是否是某两个立方数的差。 立方数的定义:立方数是一个数的3次方,例如27=33,27是立方数。
数据范围:2<=p<=1e12
由题得: a 3 − b 3 = p a^3-b^3=p a3−b3=p 由立方差公式得: a 3 − b 3 = ( a − b ) ( a 2 + a b + b 2 ) = p a^3-b^3=(a-b)(a^2+ab+b^2)=p a3−b3=(a−b)(a2+ab+b2)=p 因为p是质数,那么(a-b)=1和(a2+ab+b2)不能同时>1,否则就是合数。 显然当a,b>=1时,(a2+ab+b2)一定大于1,那么(a-b)必须等于1,
a − b = 1 a-b=1 a−b=1 a = b + 1 a=b+1 a=b+1 则两个数一定相邻,预处理一下相邻立方数的差值,因为是有序的,可以二分p是否在里面。
这题不能用map,居然会超内存
ps: 立方和预处理到1e6够了,1e63-(1e6-1)3接近3e12。