题目:
给定两个非负整数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)