用python来解PAT乙级1088三人行-20-满分

题意给出甲乙丙三人的能力值关系:甲的能力值确定是 2 位正整数;把甲的能力值的 2 个数字调换位置就是乙的能力值;甲乙两人能力差是丙的能力值的 X 倍;乙的能力值是丙的 Y 倍。

输入为你的能力值,X,Y

输出甲的能力值,以及甲乙丙三人和你的关系(‘ping’=,‘cong’>,‘gai’<)

本题先根据X,Y值求出甲乙丙的能力值,因为甲是两位数,这里可以使用两个for循环分别作为十位和个位,进行三人关系的试探,成功放入列表中,因为题目告诉可能答案不唯一,所以甲的能力值取列表最大值,另外列表长度为0直接输出‘No solution’

代码如下:

import math
me,x,y = map(int,input().split())

a_res = []#甲的能力值
b_res = []#乙的能力值
for i in range(1,10):#十位不能为0,所以(1,10)
    for j in range(10):
        if abs(10*i+j-10*j-i)/x == (10*j+i)/y:#如果满足三人能力值关系
            a_res.append(10*i+j)
            b_res.append(10*j+i)
if len(a_res) == 0:#空列表,无解时输出'No Solution'
    print('No Solution')
else:#有解时甲取最大解
    a = max(a_res)
    b = b_res[a_res.index(a)]
    c = b / y#求出甲乙丙
    res = [str(a)]
    for k in a,b,c:
        if k >me:
            res.append('Cong')
        elif k < me:
            res.append('Gai')
        else:
            res.append('Ping')
    print(' '.join(res))

提交结果:

用python来解PAT乙级1088三人行-20-满分