[Python]小x放骨牌
题目描述:小X喜欢下棋。
这天,小X对着一个长为N宽为M 的矩形棋盘发呆,突然想到棋盘上不仅可以放棋子, 还可以放多米诺骨牌。
每个骨牌都是一个长为2宽为1的矩形,当然可以任意旋转。小X想知道在骨牌两两不重叠的前提下,这个棋盘上最多能放多少个骨牌,希望你帮帮他。
输入:第一行包含用一个空格隔开的两个整数N,M。
输出:第一行包含一个整数,表示该棋盘上最多能放的骨牌个数。
样例:输入: 2 3 输出:3
数据范围
对于30%的数据,N,M≤4。
对于60%的数据,N,M≤1000。
对于 100%的数据,1≤N,M≤40000。
我是一个初学者,这题的题意还看不懂所以只写了一行 a, b = input().split()
原题 a除以2,b除以1,最后printa和b 我一会发代码 # 解题思路:分三种情况
# N(奇)M(偶)、N(奇)M(奇)、N(偶)M(偶)
# 只有N(奇)M(奇)不能摆满
def domino(m: int, n: int) -> int:
if m % 2 != 0 and n % 2 != 0:# N(奇)M(奇)的情况
min_number = min(m, n)
num = abs(m - n) * min_number // 2
num += pow((min_number-1), 2, 2) + min_number - 1
return num
else:
return m * n // 2
a, b = eval(input('enter a and b:'))
print(domino(a, b))
重要的是先理解题意想好解题思路再写代码
有一个小问题就是输入是2,3而不是2 3 temp = input ("length:")
a = 2
a = int(temp)/2
temp = input ("width:")
b = 1
b = int(temp)/1
c = a*b
print(c) wangka 发表于 2020-3-23 15:51
有几个地方是不是有点问题呢
1. 第二行和第五行的赋值是什么用的呢?
2. 第三行和第六行计算出来的是浮点型,是不是应该用地板除呢?
3. 按照你的代码,length=3,width=2时输出的c为2(用地板除的情况下),但是预期答案是3,是不是没考虑全面? wangka 发表于 2020-3-23 15:42
a除以2,b除以1,最后printa和b
对了40% 我重新看了遍题目,只要用棋盘的面积除以骨牌的面积,大家都想的太多了{:10_277:}
代码:
a, b = input().split()
a = int(a)
b = int(b)
c = 2
d = 1
c = int(c)
d = int(d)
print(a * b // c * d) March2615 发表于 2020-3-23 15:44
重要的是先理解题意想好解题思路再写代码
有一个小问题就是输入是2,3而不是2 3
这是正确的代码:
a, b = input().split()
a = int(a)
b = int(b)
c = 2
d = 1
c = int(c)
d = int(d)
print(a * b // c * d)
wangka 发表于 2020-3-23 15:51
这是正确的代码:
a, b = input().split()
a = int(a)
b = int(b)
c = 2
d = 1
c = int(c)
d = int(d)
print(a * b // c * d)
跟我后面发的一样
页:
[1]