python基础练习题(一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?)
day2
---------------------------------------------------------------
实例003:完全平方数
题目: 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
仿佛不会思考,直接上手写。。。
1 k = 10001
2 for i in range(0,k):
3 for j in range(0,k):
4 if j*j ==(i+100):
5 for k in range(0,k):
6 if k*k ==(i+268):
7 print(i)
8 continue
嗯,假装找到几个值,但这代码看得自己想吐,效率真TM慢,真low
标准答案
思路是:最坏的结果是n的平方与(n+1)的平方刚好差168,由于是平方的关系,不可能存在比这更大的间隙。至于判断是否是完全平方数,最简单的方法是:平方根的值小数为0即可。
结合起来:
1 n=0
2 while (n+1)**2-n*n<=168:
3 n+=1
4
5 for i in range((n+1)**2):
6 if i**0.5==int(i**0.5) and (i+168)**0.5==int((i+168)**0.5):
7 print(i-100)
对比下,这里应该找到数的最大值,而我少了这一步,数学改补补了。对了求一个平方根可以用 x**0.5 == int (x**0.5) ,脑子锈了。。。下面是个更烧脑的答案。。。
其他答案
分析:整数+100是一个完全平方数即大于0的数,所以这个数应该是大于-99,否则不会是完全平均数。
x+100 =n*n
x+100+168=m*m
2x+268=n*n+m*m
2x=n*n+m*m-268
x=(n*n+m*m-268)*0.5
m*m-n*n=168,根据这条推断,100*100-99*99=10000-9801=199>168,所以m和n的值都小于100,那么x的值就小于10000,所以
1 import math
2
3
4 #方法一
5 for i in range(-99,10000):
6 x = int(math.sqrt(i+100))
7 if x*x == i+100:
8 y = int(math.sqrt(i+100+168))
9 if y*y==i+100+168:
10 print(i)
11
12
13 #方法二,再次优化,以m,n来写代码,n<100,又因为m*m=n*n+168,所以m>math.sqrt(168),即m>13,这个方法循环次数更少
14 for m in range(13,100):
15 n = int(math.sqrt(m*m-168))
16 if n*n ==m*m-168:
17 print(m*m-168-100)
python基础练习题(一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?)的更多相关文章
- python基础练习题(题目 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数)
day12 --------------------------------------------------------------- 实例019:完数 题目 一个数如果恰好等于它的因子之和,这个 ...
- Python基础练习题100例(Python 3.x)
1:题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 程序源 ...
- python基础练习题3
01:有1,2,3,4个数字,能组成多少个互不相同且无重复的三位数,都是多少思路:可填写在百位,十位,个位的数字都是1,2,3,4.组成所有的排列后再去掉不满足条件的排列 list =[,,,] li ...
- Python经典练习题1:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
Python经典练习题 网上能够搜得到的答案为: for i in range(1,85): if 168 % i == 0: j = 168 / i; if i > j and (i + j) ...
- # 【Python3练习题 003】一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
# -------------------------------------------------## 所谓的“完全平方数”,就是开完根号仍然是整数.## 数学渣是这么思考的:假设这个数 i 在1 ...
- python基础练习题(题目 取一个整数a从右端开始的4〜7位。)
day36 --------------------------------------------------------------- 实例054:位取反.位移动 题目 取一个整数a从右端开始的4 ...
- python基础练习题(题目 将一个整数分解质因数。例如:输入90,打印出90=2*3*3*5)
day9 --------------------------------------------------------------- 实例014:分解质因数 题目 将一个整数分解质因数.例如:输入 ...
- python基础练习题(题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少)
day13 --------------------------------------------------------------- 实例021:猴子偷桃 题目 猴子吃桃问题:猴子第一天摘下若干 ...
- python基础练习题1
深深感知python基础是有多么重要,Ljh说一定要多练题,so,我现在开始要每天打卡练习python.加油! 01:求‘1-100’的偶数和 #第一种解法: sum=0 num=0 while nu ...
随机推荐
- [SPDK/NVMe存储技术分析]002 - SPDK官方介绍
Introduction to the Storage Performance Development Kit (SPDK) | SPDK概述 By Jonathan S. (Intel), Upda ...
- Mycat 数据切分 看这一篇就够了
数据切分 数据切分指的是通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库上面,以达到分散单台设备负载的效果. 数据的切分根据其切分规则的类型,可以分为两种切分模式.一种 ...
- 【自动化基础】手把手教零基础小白搭建APP的UI自动化环境
前言 帮助零基础小白一步步搭建UI自动化环境,完成Python+Appium+模拟器/真机的UI自动化环境搭建. 环境准备: jdk1.8.0 sdk Node.js appium python Ap ...
- pg数据库org.postgresql.util.PSQLException: ERROR: "xxx" is not a sequence
问题场景 对pg数据表执行插入语句的时候,报错如下: { "timestamp": 1587012576734, "status": 500, "er ...
- Math.round(11.5) 等于多少?Math.round(-11.5)等于 多少?
Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11.四舍五 入的原理是在参数上加 0.5 然后进行下取整.
- 用maven建立一个工程3
在文件夹里面创建一个新文件夹把工程建立在里面
- 学习 Haproxy (一)
haproxy是一个开源的.高性能的基于tcp和http应用代理的HA的.LB服务软件,它支持双机热备.HA.LB.虚拟主机.图形界面查看状态信息等功能,其配置简单.维护方便,而且后端RS的healt ...
- 设计一个简单的devops系统
前言 公司设计的RDMS挺好用的,我也照猫画虎简单的设计一个DevOps系统,与大家分享,不足之处欢迎拍砖,以免误人子弟 前置条件 gitlab gitlab-runner k8s 1. gitlab ...
- ModelSerializer序列化器实战
目录 ModelSerializer序列化器实战 单表操作 序列化器类 视图类 路由 模型 多表操作 models.py serializer.py views.py urls.py ModelSer ...
- 数字电路基础知识——组合逻辑电路(数据选择器MUX、多路复用器)
转自:https://blog.csdn.net/vivid117/article/details/100747939 数字电路基础知识--组合逻辑电路(数据选择器MUX.也即多路复用器)本次介绍数据 ...