列舉是基於逐個嘗試答案的一種問題求解策略。形如a
3=b3
+c3+
d3的等式被稱為完美立方等式。例如123
=63+
83+10
3 問題:編寫程式,對任給的正整數n(n<=100),尋找所有的四元組(a, b, c, d),使得a3
=b3+
c3+d
3 ,其中a,b,c,d大於1,小於等於n,且b<=c<=d。
輸入:乙個正整數n(n<=100)。
輸出:每行輸出乙個完美立方。輸出格式為cube = a,triple = (b, c, d)。
求解:備註:判斷條件邊界很重要
#!/usr/bin/env
python
# _*_ coding: utf-8 _*_
import sys
import math
# n = sys.argv[1]
n = 24
i = 0
for a in xrange(2, n + 1):
for b in xrange(2, n):
for c in xrange(b, n):
for d in xrange(c, n):
i += 1
if math.pow(a, 3) == math.pow(b, 3) + math.pow(c, 3) + math.pow(d, 3):
print
'cube = %d, triple = (%d, %d, %d)' % (a, b, c, d)
print
'%d iterations.' % i
cube = 6, triple = (3, 4, 5)
cube = 12, triple = (6, 8, 10)
cube = 18, triple = (2, 12, 16)
cube = 18, triple = (9, 12, 15)
cube = 19, triple = (3, 10, 18)
cube = 20, triple = (7, 14, 17)
cube = 24, triple = (12, 16, 20)
46552 iterations.
#!/usr/bin/env python
# _*_ coding: utf-8 _*_
import sys
import math
# n = sys.argv[1]
n = 24
i = 0
fora
in xrange(2, n + 1):
for b in xrange(2, a):
for c in xrange(b, a):
for d in xrange(c, a):
i += 1
if math.pow(a, 3) == math.pow(b, 3) + math.pow(c, 3) + math.pow(d, 3):
print 'cube = %d, triple = (%d, %d, %d)' % (a, b, c, d)
print '%d iterations.' % i
cube = 6, triple = (3, 4, 5)
cube = 12, triple = (6, 8, 10)
cube = 18, triple = (2, 12, 16)
cube = 18, triple = (9, 12, 15)
cube = 19, triple = (3, 10, 18)
cube = 20, triple = (7, 14, 17)
cube = 24, triple = (12, 16, 20)
12650 iterations.
從上面可以看出列舉的邊界不同,效率會差將近三倍。
c++原始碼位址(已在poj上accepted):記得給個star。
程式設計與演算法(二)演算法基礎
python完美立方 列舉 完美立方
1.列舉 列舉是基於逐個嘗試答案的一種問題求解策略。2.完美立方 形如 a 3 b 3 c 3 d3 的等式被稱為完美立方等式。例如 123 6 3 8 3 10 3 問題 編寫程式,對任給的正整數n n 100 尋找所有的四元組 a,b,c,d 使得 a 3 b 3 c 3 d 3 其中a,b,c...
列舉 完美立方
description 形如 a3 b3 c3 d3的等式被稱為完美立方。例如 123 63 83 103。編寫乙個程式,對任給的正整數 n n 100 尋找所有的四元組 a,b,c,d 使得a3 b3 c3 d3,其中a,b,c,d大於1,小於等於n,且b c d。input 多組測試資料,每組測...
列舉 完美立方
題目描述 形如 a3 b 3 c 3 d 3的等式被稱為完美立方。例如 12 3 6 3 8 3 10 3。編寫乙個程式,對任給的正整數 n 100 尋找所有的四元組 a,b,c,d 使得 a 3 b 3 c 3 d 3,其中 a,b,c,d a,b,c,d 大於 1,小於 等n,且 b c d。輸...