找回密码
 欢迎注册
楼主: 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-11-22 17:36 , Processed in 0.019813 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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