输入: n>0
输出: k*(k+1)=n 的解
如果无解,则返回0
*/
typedef unsigned long U32;
U32 calculate(U32 n)
{
U32 left = 1, right = 0x10000, m, mid;
if (n==1)return 0; /* 无解 */
if (n==2)return 1;
while(left+1<right)
{
mid = (left + right) / 2;
m = mid*(mid+1);
if (m==n) return mid; /* 有解 */
else if (m<n) left = mid;
else right = mid;
}
return 0; /* 无解 */
}
页:
1
[2]