我如何解决下面的问题而不反向工程示例测试用例

2024-04-25 06:58:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我在HackerAth中解决了二进制字符串问题下面的问题,该问题表示“给定四个整数x、y、a和b。确定是否存在一个具有x 0和y 1的二进制字符串,使得等于其中序列“01”的子序列总数为a,等于其中序列“10”的子序列总数为b。”“使用以下代码对样本测试用例进行反向工程:

import sys
s = sys.stdin.read()

for i in s.split('\n'):
    string = i.split(' ')
    if len(string) != 4:
        print('')
    else:
        x,y,a,b = string
        x = int(x)
        y = int(y)
        a = int(a)
        b = int(b)

        if (x*y == a+b):
            print('Yes')
        else:
            print('No')

社论中给出的解释是,如果x*y==a+b,那么就存在这样一个二进制字符串,我也发现了对测试用例进行反向工程的方法,但我真的不知道该条件如何满足

给出的示例之一是x、y、a和b分别为3、2、4和2,其中字符串00110是有效字符串,因为3*2=4+2

但是**00110有01和10,它是如何产生的,所以01的数字不等于“a”,10的数字不等于“b”。我遗漏了问题的任何逻辑或其他方面吗?**

有关详细信息,请参阅实际问题link


Tags: 字符串stringifsys二进制测试用例序列数字