1062. 最简分数(20)——Python
2017-12-30 11:28
477 查看
测试点1测试的是,输入的初始的两个值是没有大小的先后顺序的,开始的时候我是把两个值默认是先输入的是大的;
测试点2测试的是,输出的应是两数之间的数,不能包括两个数,就算在编程时自己知道这个规则,但是实现的程序可能就没有按照自己想的那样跑,所以自己可以验证下;
测试点4测试的是,输出的格式是否正确,就是中间有空格,但是开始跟结束的时候不能有空格。
#欧几里得算法求最大公约数
def get_gcd(a, b):
a, b = int(a), int(b)
k = a // b
remainder = a % b
while remainder != 0:
a = b
b = remainder
k = a // b
remainder = a % b
return b
#获得a,b的最小公倍数
def get_lcm(a, b):
a, b = int(a), int(b)
if a > b:
greater = a
else:
greater = b
while(True):
if((greater % a == 0) and (greater % b == 0)):
lcm = greater
break
greater += 1
return lcm
#得到同分后的数
def get_samedeno(a, b, same):
a, b, same = int(a), int(b), int(same)
multi = same // b
my_mole = a * multi
return my_mole
string = input().split()
fir_mole, fir_deno = string[0].split('/')
sec_mole, sec_deno = string[1].split('/')
deno_lcm = get_lcm(fir_deno, sec_deno)
deno_lcm = get_lcm(deno_lcm, string[2])
num_1 = get_samedeno(fir_mole, fir_deno, deno_lcm)
num_2 = get_samedeno(sec_mole, sec_deno, deno_lcm)
fir_num = min(num_1, num_2)
last_num = max(num_1, num_2)
my_num = get_samedeno(1, int(string[2]), deno_lcm)
key = 0
num = my_num
multi = fir_num // my_num
remainder = fir_num % my_num
if remainder != 0:
multi += 1
my_num = num * multi
list = []
while(my_num >= fir_num and my_num <= last_num):
my_gcd = get_gcd(multi, string[2])
if my_gcd == 1:
string_1 = str(multi) + '/' + string[2]
if string_1 != string[0] and string_1 != string[1]:
list.append(string_1)
multi += 1
my_num = num * multi
print(' '.join(list))
测试点2测试的是,输出的应是两数之间的数,不能包括两个数,就算在编程时自己知道这个规则,但是实现的程序可能就没有按照自己想的那样跑,所以自己可以验证下;
测试点4测试的是,输出的格式是否正确,就是中间有空格,但是开始跟结束的时候不能有空格。
#欧几里得算法求最大公约数
def get_gcd(a, b):
a, b = int(a), int(b)
k = a // b
remainder = a % b
while remainder != 0:
a = b
b = remainder
k = a // b
remainder = a % b
return b
#获得a,b的最小公倍数
def get_lcm(a, b):
a, b = int(a), int(b)
if a > b:
greater = a
else:
greater = b
while(True):
if((greater % a == 0) and (greater % b == 0)):
lcm = greater
break
greater += 1
return lcm
#得到同分后的数
def get_samedeno(a, b, same):
a, b, same = int(a), int(b), int(same)
multi = same // b
my_mole = a * multi
return my_mole
string = input().split()
fir_mole, fir_deno = string[0].split('/')
sec_mole, sec_deno = string[1].split('/')
deno_lcm = get_lcm(fir_deno, sec_deno)
deno_lcm = get_lcm(deno_lcm, string[2])
num_1 = get_samedeno(fir_mole, fir_deno, deno_lcm)
num_2 = get_samedeno(sec_mole, sec_deno, deno_lcm)
fir_num = min(num_1, num_2)
last_num = max(num_1, num_2)
my_num = get_samedeno(1, int(string[2]), deno_lcm)
key = 0
num = my_num
multi = fir_num // my_num
remainder = fir_num % my_num
if remainder != 0:
multi += 1
my_num = num * multi
list = []
while(my_num >= fir_num and my_num <= last_num):
my_gcd = get_gcd(multi, string[2])
if my_gcd == 1:
string_1 = str(multi) + '/' + string[2]
if string_1 != string[0] and string_1 != string[1]:
list.append(string_1)
multi += 1
my_num = num * multi
print(' '.join(list))
相关文章推荐
- PAT乙级真题1062最简分数(20)
- 1062. 最简分数(20)
- 1062. 最简分数(20) PAT乙级
- 1062. 最简分数(20)
- 1062. 最简分数(20)
- 1062. 最简分数(20) python篇
- pat 1062. 最简分数(20) 水
- 1062. 最简分数(20)
- 1062. 最简分数(20) PAT乙级真题
- pat 乙级 1062. 最简分数(20)
- 1062. 最简分数(20)
- 1062. 最简分数(20)
- 乙级 PAT 1062. 最简分数(20)
- 1062. 最简分数(20)
- 1062. 最简分数(20)
- 1062. 最简分数(20)
- pat乙级1062. 最简分数(20)
- 1062. 最简分数(20)
- 1062. 最简分数(20)-PAT乙级
- 1062. 最简分数(20)