verybigstudent 2022-02-08 14:00 采纳率: 60%
浏览 80
已结题

python 子串问题

作为友好的寒假集训营,小红当然要送给大家一道签到题!

小红拿到了一个正整数 xx 。她想构造一个正整数 yy,满足以下性质:

  1. yy 是 xx 的倍数,且 xx 和 yy 不能相等。
  2. xx 在二进制表示下(为一个01串)是 yy 的二进制表示的一个子串。且 xx 和 yy 的二进制表示的1的个数不能相同。
  3. yy 必须为不超过 10^{19}10
    19
    的正整数。
    举个例子:
    若 x=5x=5 :
    那么构造的 yy 不能是5,因为这样 yy 和 xx 相等,所以非法。
    也不能是 6,因为这样 yy 不是 xx 的倍数,所以非法。
    也不能是 10 ,因为这样 yy 的二进制表示是 1010、xx 的二进制表示是101,虽然 yy 是 xx 的倍数且 xx 的二进制是 yy 的一个子串,但它们的 '1' 的个数相同,所以非法。
    输入描述:
    一个正整数 xx 。
    数据范围: 1≤ x≤ 10^91≤x≤10
    9

输出描述:
构造的正整数 yy 。如果有多个合法解,输出任意即可。可以证明,无论 xx 是多少,最终一定是有合法解的。
示例1
输入
5
输出
95
说明
95是5的倍数,满足第一个性质。95的二进制表示是 '1011111',包含了子串 '101',满足第二个性质。
另外,45、90、125等答案也都是合法解。

  • 写回答

1条回答 默认 最新

  • ~白+黑 Python领域新星创作者 2022-02-08 14:34
    关注
    
    def make(num):
        n=2
        bnum = bin(num)
        while True:
            res = num*n
            one = bnum.count("1")-bin(res).count("1")
            if (bnum in bin(res)) and  (one != 0):
                yield res
            n += 1
    
    if __name__ == "__main__":
        a=make(5)
        for i in range(10):
            print(next(a))
        
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月16日
  • 已采纳回答 2月8日
  • 创建了问题 2月8日

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误