zoukankan      html  css  js  c++  java
  • Python:每日一题003

    题目

    一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?

    程序分析

    在10000以内判断,将该数加上100后再开方,加上268后再开方,如果开方后的结果满足如下条件,即是结果。提示:使用 math 模块。

    个人解题思路及结果:

     from math import sqrt
      ​
      def issqrt(num):
          x = int(sqrt(num))
          pow_x = x * x
          return pow_x == num   #判断一个数是否可以被开方,如果不能被开方则int后数值变小,就与原数数值不相等
      num_list = []
      n = -100  #注意这里的起点,题目没有说明不能为负整数,应该从可以开方的0开始算起,即起点取值到-100
      while n < 10000:
          a = n + 100
          b = n + 268
          if issqrt(a) and issqrt(b):
              num_list.append(n)
          n = n + 1
      print("这些数是",num_list)
     
    

      

    其他的参考解答:

    解答1

      
      import math
      for i in range(-100,10001):
          if math.sqrt(i+100)%1 == 0 and math.sqrt(i+268)%1 == 0: #这里是直接计算除以1取余是否为0
              print(i)
    

      

    解答2

      
      for x in range(-100, 10000):
          a = (x + 100) ** 0.5
          b = (x + 268) ** 0.5
          if not a % 1 and not b % 1:
              print(x)
     
    

    解答3

      
      from math import sqrt
      print([x for x in range(-100,10000) if (int(sqrt(x+100)))**2==x+100 and (int(sqrt(x+268)))**2==x+268]) 
      #直接用列表解析式生成,一个数+100的开方的平方等于一个数加100,如果开方后有小数则不相等。
    

      

    (本文编号003,首发于2018年9月13日)

  • 相关阅读:
    二分图 洛谷P2055 [ZJOI2009]假期的宿舍
    并查集 洛谷P1640 [SCOI2010]连续攻击游戏
    贪心 洛谷P2870 Best Cow Line, Gold
    贪心 NOIP2013 积木大赛
    快速幂 NOIP2013 转圈游戏
    倍增LCA NOIP2013 货车运输
    树形DP 洛谷P2014 选课
    KMP UVA1328 Period
    动态规划入门 BZOJ 1270 雷涛的小猫
    KMP POJ 2752Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/Nicholas0707/p/9643660.html
Copyright © 2011-2022 走看看