- 注册时间
- 2010-5-15
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 109
- 在线时间
- 小时
|
发表于 2010-5-16 13:30:20
|
显示全部楼层
- /*
- 输入: 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; /* 无解 */
- }
复制代码 |
|