http://student.csdn.net/space.php?uid=32341&do=blog&id=1716
問(wèn)題:還有更快的辦法嗎?請(qǐng)仔細(xì)觀察第一段代碼,看得出哪個(gè)特點(diǎn)可以利用不?關(guān)鍵就在那個(gè)通項(xiàng)公式,(n1+n2)*(n2-n1+1) == n*2這里如果先把n乘以2,然后的問(wèn)題可不可以看成是因子分解?答案很明顯。假如分解出的結(jié)果是n*2 = a*b ,那就解方程組 n1+n2=a, n2-n1+1=b即n1=(a-b+1)/2, n2=(a+b-1)/2如果解出的結(jié)果n1和n2是整數(shù)的話(即要使a和b一奇一偶),顯然就得到一組解了而因子分解的復(fù)雜度是O(sqrt(n)),顯示會(huì)比之前第二段代碼要節(jié)省非常多的時(shí)間。
Powered by: C++博客 Copyright © life02