列舉 完美立方

2021-08-13 18:21:17 字數 2055 閱讀 5371

列舉是基於逐個嘗試答案的一種問題求解策略。形如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。輸...