Writeup 实验吧/编程/分数拆分/1859【穷举】

http://www.shiyanbar.com/ctf/1859

关于范围确定:
y最小应为200,至于最大为啥为521,因为找到最大的一个pair(x=650,y=520)
关于x的上限,因为存在pair(x=80400,y=201)

count = 0

for y in range(200, 521):
    for x in range(y, 100000):
        if (x*y == 400*y +200*x):
            print("%d %d" % (x,y))
            count = count + 1

print count

进阶:
对x求解,得到x=(400*y)/(y-200),得到y下限200,x=y时,得到y上限600。

count = 0

for y in range(201, 600):
    if (400*y % (y-200) == 0):
        count = count +1

print count

你可能感兴趣的:(Writeup 实验吧/编程/分数拆分/1859【穷举】)