2017-06-15 55 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」)。 –