鱼C论坛

 找回密码
 立即注册
查看: 2715|回复: 7

[技术交流] python小练习(039):找数字

[复制链接]
发表于 2016-12-5 20:08:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
python小练习(038),传送门

再来看一题:找数字

题目很简单:

找出唯一一个符合如下条件的数字:它的平方是具有 1_2_3_4_5_6_7_8_9_0 形式的数。

每个 _ 都代表了单个数字。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-5 20:27:41 | 显示全部楼层
  1. for i in range(101010101, 138902663):
  2.     n = str(i * i)
  3.     if n[::2] == '123456789':
  4.         print(i * 10, n + '00')
  5.         break
复制代码

  1. 1389019170 1929374254627488900
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-5 21:28:26 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-9 02:57:43 | 显示全部楼层
  1. #小练习039 低效暴力解法

  2. def find_num():
  3.     temp_list = []
  4.     i = 1389019170
  5.     flag = 0
  6.     while flag == 0:
  7.         temp_list = list(str(i ** 2))
  8.         print(i)
  9.         for each in range(0,10):
  10.             if each < 9:
  11.                 if int(temp_list[each * 2]) != each + 1:
  12.                     i += 1
  13.                     break
  14.             else:
  15.                 if int(temp_list[each * 2 ]) == 0:
  16.                     flag = 1
  17.                     print(i,i ** 2)
  18.         if flag == 1:
  19.             break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-16 17:00:43 | 显示全部楼层
  1. a = int(10203040506070809**0.5)
  2. b = int(19293949596979899**0.5)+1
  3. for i in range(a, b):
  4.     n = str(i ** 2)
  5.     if n[::2] == '123456789':
  6.         print(i, '-->', n)
  7.         break

  8. #  138901917 --> 19293742546274889   
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-8 20:32:57 | 显示全部楼层
我感觉还可以进一步优化,我在考虑下
还有,你给我推荐的那个模块,我看了很久很久,一直卡在数独那儿看不懂。
而且用那个模块解题,不知道怎么下手写...暂时还是没能理解这个模块的用法,百度上也找不到比你写的更详细
的资料。再多一两个例子就好了,我比较笨
  1. import math

  2. def S():
  3.     for i in range(int(math.sqrt(10203040506070809))+2,int(math.sqrt(192939495969798999)),10):
  4.         yield i
  5.         yield i+4
  6.    

  7. def main():
  8.     for i in S():
  9.         if str(i**2)[::2] == '123456789':
  10.             print(str(i)+'0')

  11. main()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-20 18:37:59 | 显示全部楼层
  1. xmin=int(1020304050607080900**0.5)//100
  2. xmax=int(1929394959697989900**0.5)//100
  3. for i in range(xmin,xmax+1):
  4.         for k in [30,70]:
  5.                 if str((i*100+k)**2)[::2]=='1234567890':
  6.                         print(i*100+k,(i*100+k)**2)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-24 10:39:40 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 06:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表