2021-03-28:定义一种数:可以表示成若干(数量>1)连续正数和的数 。比如:5 = 2+3,5就是这样的数 ;12 = 3+4+5,12就是这样的数 。1不是这样的数,因为要求数量大于1个、连续正数和 。2 = 1 + 1,2也不是,因为等号右边不是连续正数 。给定一个参数N,返回是不是可以表示成若干连续正数和的数 。

福大大 答案2021-03-28:

1.自然智慧。
滑动窗口。中点到1。L左移,和增大;R左移,和减小。如果和=N,成立。

2.根据结果反推,找规律。
N是2次幂,不能表示成连续正数和;N不是2次幂,是连续正数和的数。

代码用golang编写。代码如下:

package mainimport "fmt"func main() {    for i := 1; i <= 64; i++ {        fmt.Println(i, isMSum1(i), isMSum2(i))    }}func isMSum1(num int) bool {    if num == 1 {        return false    }    R := (num + 1) >> 1    L := R - 1    sum := R    for {        if sum == num {            return true        } else if sum > num {            sum -= R            R--        } else {            if L == 0 {                break            }            sum += L            L--        }    }    return false}func isMSum2(num int) bool {    return num != (num & (^num + 1))    //return num != (num & (-num))    //return (num & (num - 1)) != 0}

执行结果如下:


左神java代码
评论

©著作权归作者所有:来自51CTO博客作者福大大的原创作品,如需转载,请注明出处,否则将追究法律责任

你的鼓励让我更有动力

赞赏

0人进行了赞赏支持

更多相关文章

  1. 关于一个NBA球队连续夺冠的SQL查询问题,解法很精妙~
  2. SQL中如何求解连续N天都满足的问题
  3. SQL如何求解多元一次方程和构造连续整数
  4. CISSP学习:第3章 业务连续性计划
  5. android中如何实现连续点击返回键退出整个应用 android两次返回
  6. Android:长按连续响应的Button
  7. Android自定义相机实现自动对焦和手动对焦
  8. Android(安卓)如何连续的扫描蓝牙的RSSI来测距离,实现三点定位
  9. Android(安卓)绘制多个连续带数字圆圈。

随机推荐

  1. 拥抱 Android Studio 之一:从 ADT 到 Andr
  2. 【魔幻塔防】60关配置文件
  3. ch020 Android SQLite3(第二部分)
  4. 对话框大合集
  5. Android录音实现——使用AtudioRecord
  6. Android Studio学习之-控件总结
  7. Android实现根据条件自动转换手机震动和
  8. Android应用安全之Android平台上的跨应用
  9. android:taskAffinity && android:allowT
  10. 【Android 开发】: Android 消息处理机制