2017-06-15 114 views
0

我一直有这个简单问题的问题。如果/ elif/else能够用for循环来解决它,但不仅仅是。有关如何解决这个问题的任何建议?用if/elif/else分开巧克力吧

问题:

巧克力条具有分成n×m个部分的矩形的形式。 巧克力棒可以沿着其图案上的选定直线分割成两个长方形部分 。确定是否可以将其分割为 ,以使其中一个零件精确地具有正方形。该程序读取三个整数:n,m和k。它应该 打印是或否。

我如果解决方案,但是当输入是(4,2,6)时,答案是不正确的。

n = int(input()) 
m = int(input()) 
k = int(input()) 

if k/max(n,m) % 1 == 0 and k/max(n,m) <= min(n,m): 
    print('YES') 
else: 
    print('NO') 
+1

'k/max(n,m)%1'总是0 ... –

+0

使用for循环有什么问题?此外,您还有哪些其他资源可用?例如,你可以使用返回'k'的素因式分解的例程吗? –

+0

目前还不清楚还有哪些其他资源可用。 – DatCra

回答

3

因此问题是基本上问:

对于一个给定的n,m和k,并存在两个数,a和b,使得A * B = k,其中任一= n和b < m或a = m和b < n。

可以解决这个条件:

n = int(input()) 
m = int(input()) 
k = int(input()) 

if (k % n == 0 and k/n < m) or (k % m == 0 and k/m < n): 
    print('YES') 
else: 
    print('NO') 

你就忘记了的事情是,它可以从被削顶至底左到右。

+0

即将发布完全相同的代码,但是对于这两种情况使用'elif'。值得注意的是,使用'<'而不是'<='强制条件实际上需要被破坏(即k = n * m打印“NO”)。 –