- 约翰的后花园
约翰想在他家后面的空地上建一个后花园,现在有两种砖,一种3 dm的高度,7 dm的高度。约翰想围成x dm的墙。如果约翰能做到,输出YES,否则输出NO。
样例
给出 x = 10,返回YES。
解释:
x = 3 + 7 : 即需要1匹3 dm高度的砖和1匹7 dm 高度的砖。
给出 x = 5,返回 NO。
解释:
不能用高度为3 dm的砖和高度为7 dm的砖砌成 5 dm的墙。
给出 x = 13,返回YES。
解释:
x = 2 * 3 + 7 : 即需要2匹3 dm高度的砖和1匹7 dm 高度的砖。
注意事项
X是一个整数,取值范围为 [3, 1000]。
class Solution:
"""
@param x: the wall's height
@return: YES or NO
"""
def isBuild(self, x):
# write you code here
n = x // 7
y = x % 7 % 3
if n > 1 or (y == 2 and n ==1) or (y == 0):
return 'YES'
else:
return 'NO'
主要思想:%3得到余数一定是0,1,2。0就代表正好符合,1与两个7组合15一定可以被三整除,2与一个7组合9一定能被3整除。只要这个整数大于14,就证明肯定有两个7。那就不管%3得到的余数是多少,都可以组合一个被三整除的结果出来,于是就没必要判断%3之后的结果了。
class Solution:
"""
@param x: the wall's height
@return: YES or NO
"""
def isBuild(self, x):
# write you code here
if x >= 14 :
return 'YES'
else :
y = x % 7 % 3
if y == 0 or (x >= 7 and y == 2):
return 'YES'
return 'NO'