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