题目

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

程序分析

因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限:

n=0
while (n+1)**2-n*n<=168:
 n+=1
print(n+1)

补充:用python实现”有效的完全平方数”的一种方法

给一个正整数num,写一个函数判断它是否是一个完全的平方数,是则返回true,不是返回false

注意:不要使用任何内嵌的函数,如sqrt

example 1

input: 16
output: true
example 2:
input: 14
output: false

1:二分法

def isperfectsquare(self, num):
  """
  :type num: int
  :rtype: bool
  """
  low = 1 
  high = num
  while low < high:
   mid = (low + high) // 2
   if mid * mid == num:
    return true
   elif mid * mid < num:
    low = mid + 1
   else:
    high = mid - 1
  return low * low == num

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。如有错误或未考虑完全的地方,望不吝赐教。