鱼C论坛

 找回密码
 立即注册
查看: 1723|回复: 10

[已解决][Python]小x放骨牌

[复制链接]
发表于 2020-3-23 14:25:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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()
原题
最佳答案
2020-3-23 15:42:01
a除以2,b除以1,最后printa和b
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-23 15:42:01 | 显示全部楼层    本楼为最佳答案   
a除以2,b除以1,最后printa和b
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 15:42:43 | 显示全部楼层
我一会发代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 15:44:40 | 显示全部楼层
# 解题思路:分三种情况
# 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 15:51:50 | 显示全部楼层
temp = input ("length:")
a = 2
a = int(temp)/2
temp = input ("width:")
b = 1
b = int(temp)/1
c = a*b
print(c)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 16:23:14 | 显示全部楼层

有几个地方是不是有点问题呢

1. 第二行和第五行的赋值是什么用的呢?
2. 第三行和第六行计算出来的是浮点型,是不是应该用地板除呢?
3. 按照你的代码,length=3,width=2时输出的c为2(用地板除的情况下),但是预期答案是3,是不是没考虑全面?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 17:53:45 | 显示全部楼层
wangka 发表于 2020-3-23 15:42
a除以2,b除以1,最后printa和b

对了40%
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 18:18:17 | 显示全部楼层
我重新看了遍题目,只要用棋盘的面积除以骨牌的面积,大家都想的太多了
代码:
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 18:19:16 | 显示全部楼层
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 18:19:49 | 显示全部楼层

这是正确的代码:
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-24 13:20:08 | 显示全部楼层
跟我后面发的一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 08:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表