某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣 掉与题号相同的分数(选手必须回答问题,不回答按错误处理 每位选手都有一个起步的分数为10分。 某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个 题目答错了吗? 如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如: 0010110011 就是可能的情况。 你的任务是输出所有可能情况,按二进制从小到大的顺序,每个答案占一行。 #遍历所有可能的10位二进制数 for i in range(2**10): binary_str = bin(i)[2:].zfill(10) #将十进制转换为二进制,不足10位的左边补0 score = 10 for j,value in enumerate(binary_str): if value == '1': score = score*2 else: score -= (j+1) if score == 100: print(binary_str)