http://student.csdn.net/space.php?uid=32341&do=blog&id=1716
问题:还有更快的办法吗?请仔细观察第一段代码,看得出哪个特点可以利用不?关键就在那个通项公式,(n1+n2)*(n2-n1+1) == n*2这里如果先把n乘以2,然后的问题可不可以看成是因子分解?答案很明显。假如分解出的结果是n*2 = a*b ,那就解方程组 n1+n2=a, n2-n1+1=b即n1=(a-b+1)/2, n2=(a+b-1)/2如果解出的结果n1和n2是整数的话(即要使a和b一奇一偶),显然就得到一组解了而因子分解的复杂度是O(sqrt(n)),显示会比之前第二段代码要节省非常多的时间。
Powered by: C++博客 Copyright © life02