找回密码
 欢迎注册
楼主: qianyb

[提问] 快速求k的值,k(k+1)=N

[复制链接]
发表于 2010-5-16 13:30:20 | 显示全部楼层
  1. /*
  2. 输入: n>0
  3. 输出: k*(k+1)=n 的解
  4.       如果无解,则返回0
  5. */
  6. typedef unsigned long U32;
  7. U32 calculate(U32 n)
  8. {
  9.         U32 left = 1, right = 0x10000, m, mid;
  10.         if (n==1)  return 0; /* 无解 */
  11.         if (n==2)  return 1;
  12.         while(left+1<right)
  13.         {
  14.                 mid = (left + right) / 2;
  15.                 m = mid*(mid+1);
  16.                 if (m==n)       return mid; /* 有解 */
  17.                 else if (m<n)   left = mid;
  18.                 else            right = mid;
  19.         }
  20.         return 0; /* 无解 */
  21. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-3 09:29 , Processed in 0.041533 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表