自学Python之心得体会(四)

Python 练习实例3

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序分析:这道题设计到算法问题,设计程序时应考虑到时间复杂度。

x+100=m^2  

x+100+168=n^2  

m^2-n^2=168   ------①

(m+n)(m-n)=168   ------②

由①式可知这两个完全平方数要么都是偶数要么都是奇数,而由②式可知无论m,n都是偶数还是奇数,m+n和m-n得到的都是偶数,故将168拆成两个偶数表示,有[2,84]、[4,42]、[6,28]、[12,14]。故将这几组数据带入方程中,便可求出解。这道题可能是因为数值较小,故手动都很方便算出解,但是如果数值很大时,就要用到循环去做。

方法一:用二位数组存放着四组数据,然后用循环遍历,求出X。

代码如下:

l=[[2,84],[4,42],[6,28],[12,14]]
for i in range(0,len(l)):
    m=(l[i][1]+l[i][0])/2
    n=m-l[i][0]
    x=n*n-100
    print x

方法二:用循环得出1到69中的解。

代码如下:

for i in range(1,85):
    if 168%i==0:
        j=168/i;
        if i>j and (i+j)%2==0 and (i-j)%2==0:
            m=(i+j)/2
            n=(i-j)/2
            x=n*n-100
            print (x)

方法三:利用循环直接从1到168中找出解,这道题数值较小,执行比较快,但如果数值很大,运行时间会加长。

代码如下:

for m in range(168):
    for n in range(m):
        if(m+n)*(m-n)==168:
            x=n**2-100
            print x

 

 

你可能感兴趣的:(心得体会)