贝壳2021算法取模操作

题目:
给定两个非负整数a,b,求有多少个正整数x满足a mod x =b,如果有无穷个输出‘inf’
输入
7 3
输出
1

思路:
a/x=y…b,等价与xy+b=a,a,b已知,就是求有多少个正整数x,y满足xy=a-b,及求xy有多少个约数,因为数取模x一定要大于b。所以题目最后等价于求xy在(b,a-b]范围内有多少个约数。当a-b=1时没有约数,a-b=0时有无数个约数,a-b<0也没有约数。写代码时需要枚举这些特例。代码如下:

list1 = list(map(int,input().split()))
a = list1[0]-list1[1]
if a == 1:
    print(0)
elif a < 0:
    print(0)
elif a == 0:
    print('inf')
else:
    list2 = []
    for i in range(1,int(a**0.5)+1):
        if a%i==0:
            list2.append(i)
            list2.append(a//i)
    list2 = list(set(list2))
    print(list2)
    list3 = []
    for j in list2:
        if j > list1[1]:
            list3.append(j)
    print(list3)
    z = len(list3)
    print(z)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值