鱼C论坛

 找回密码
 立即注册
查看: 12118|回复: 43

[技术交流] 01 - 女神的手机号

[复制链接]
发表于 2021-2-8 22:08:19 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 鱼C-小师妹 于 2021-3-25 10:25 编辑

在线讲解:



2021-02-08_16-43-57.jpg

上一讲:00 - 百钱百鸡师兄们的反馈还不错,知道主动来猜黑板了!

哈哈哈,真好,这都是小师妹给大家源源不断的录视频的动力来源!

请保持住这个好习惯哦~

任何能帮助小师妹进步的建议,欢迎在下方积极留言

好啦,废话不多说,进入今天的主题,找女神手机号!

先有请今天的主人公:小由鱼阁下~

他一直暗恋同是计科专业的同班女神,无数次悉心热情的帮女神修改代码。
(教学需要剧情,请不要深究哈)

有一天,女神又来找小由鱼调程序,二话没说,放下电脑就走了。

小由鱼看到代码编辑器上写了一段注释:
'''
想和我出去约会吗?

请根据以下线索找出我手机号 1239098xxxx 的后 4 位,并在今晚 21:00 前短信告诉我集合地方~

##前两位数字相同
##后两位数字相同,但与前两位不同
## 4 位数字刚好是一个整数的平方
'''
看到这里,小由鱼心头小鹿乱撞!

想到女神那甜蜜的微笑,仿佛一股清凉的泉水从他心中流过。

喜悦和躁动涌进了他的心中,心仿佛荡 漾在春 水里。

那颗心乐得快要盛不下蜜糖般的喜悦!!

一看手表,还有 20min,既然如此,只能来撸代码了!

按照女神的要求,其实就是找到一个前两位数相同、后两位数相同且相互间又不同的 4 位整数。

然后判断该整数是否是另一个整数的平方!

即求一个 4 位数 abcd,满足下面的条件( abcd 均属于[0,9]):
2021-02-09_14-54-42.jpg

其中由注释可知,a 和 b,c 和 d,又各自相等。

公示有了,最简单粗暴方式还是用穷举法,一个一个试,答案很快就会浮出水面!
(OS:不懂穷举法的请看上集:03:38)

2021-02-09_14-10-42.jpg

小由鱼此时心中想起一句名言:

做好流程图,程序立刻出~


首先设计双层循环穷举出所有由前两位数和后两位数组成的四位数。

然后在最内层穷举出所有平方后结果为四位的数,最后判断该数是否符合总条件,符合则打印答案。

流程图参上:

游客,如果您要查看本帖隐藏内容请回复


写流程图时小由鱼发现找整数时,不一定从1开始,因为女神手机号只能是四位!

00xx,这样根本无法满足条件。

既然如此是四位数,那么它的平方根只能是从 34 到 99 之间!

如果用上一讲的 while 循环来写,代码就是:
i = 1
while i <= 9:
    j = 0
    while j <= 9:
        if(i != j):
            k = 1000*i+100*i+10*j+j
            t = 34
            while t <= 99:
                if(k == t*t):
                    print(k)
                t += 1
        j += 1
    i += 1
while 循环我们都用了这么久,还可以用更省心的 for 循环噢!

将上面的 while 条件以及 +1 条件,统一用 for () in range()替换。

所以流程图中所有 while 都可以修改 ,并且最后的 for 循环条件就是(34,99):
for t in range(34, 100)
代码分分钟搞定了,看下结果:

2021-02-09_15-25-38.jpg

抬手看表,刚刚 20:50,赶紧发短信:

女神我们晚上去.........

哈哈哈,让我们祝小由鱼幸福吧~~

源码(程序那么简单,自己写!): findBeauty.zip (468 Bytes, 下载次数: 26, 售价: 8 鱼币)

评分

参与人数 2荣誉 +7 鱼币 +3 贡献 +6 收起 理由
睦ちゃん她爹 + 5 + 3 鱼C有你更精彩^_^
不二如是 + 2 + 3 + 3 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2021-4-12 09:43:18 | 显示全部楼层
import math

for x in range(1, 10):
    for y in range(10):
        if x != y:
            num = x * 1000 + x * 100 + y * 10 + y
            if math.sqrt(num) % 1 == 0:
                print(num)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2021-5-8 22:34:45 From FishC Mobile | 显示全部楼层
有socket和socketserver的内容吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-9 10:47:45 From FishC Mobile | 显示全部楼层
……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-9 20:44:48 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-10 17:57:28 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-10 09:06:22 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-21 11:05:03 | 显示全部楼层
for x in range(10):
    for y in range(10):
        for z in range(32,100):
            k = int(f'{x}{x}{y}{y}')
            if x != y and z * z == k:
                print('号码后四位是', k)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-6 20:10:18 | 显示全部楼层
for i in range(32,99):
    num = pow(i,2)
    if num%10==int(num%100/10) and int(num/1000)==int(num/100)%10 and (num%10)!=int(num/1000):
        print(num)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-6 20:11:26 | 显示全部楼层
for i in range(1,10):
    for j in range(1,10):
        if i != j and pow(i*1000+i*100+j*10+j, 0.5)%1==0:
            print(i,i,j,j)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-18 08:35:17 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-10 01:46:20 | 显示全部楼层
分析了一下,末位2位一致的完全平方数,末位只能是44,然后尾数为44只能是个位数和十位数造成。
所以,数学大佬肯定当场就口算出了答案,7744
而我们则是要靠计算机找规律。
2.png
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-8-13 10:06:25 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-31 19:25:03 | 显示全部楼层
hhhhhhhhhhhhhhhhhhhhhhhhhhhh
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-31 20:01:20 | 显示全部楼层
#include<stdio.h>  //c语言实现

int main(){
        int i,j,k,num;
         for(i=1; i<10; i++){
                 for(j=0; j<10; j++){
                                 if(i!=j){
                                  num=i*1000+i*100+j*10+j;
                                  
                                  for(k=1; k<100; k++){
                                          if(k*k==num){
                                                  printf("phone number is %d",num);
                                          }
                                  }
                                 }
                                 
                 }
         }
         
         return 0;
}

评分

参与人数 1荣誉 +1 收起 理由
METALARISING + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

发表于 2021-9-2 18:36:31 | 显示全部楼层
'''手机号后四位'''
for a in range(10):
    for c in range(10):
        c != a
        for x in range(32,100):
            n = 1000*a + 100*a + 10*c + c
            if n == x*x:
                print(n)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-12 15:57:42 | 显示全部楼层
for i in range(1,10):
    for j in range (1,10):
        if i!=j:
            k=1100*i+11*j
            for t in range(34,100):
                if k==t*t:
                   num=k
                   print("女神的号码后四位为:",k)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-17 19:10:04 | 显示全部楼层
import math
isPerfectSquare = lambda n: True if int(math.sqrt(n) + 0.5)**2 == n else False
[print(f"女神电话号码:1239098{a}{a}{b}{b}") for a in range(10) for b in range(10) if isPerfectSquare(int(str(f"{a}{a}{b}{b}"))) and a != b]
女神电话号码:12390987744
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-18 16:05:01 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-20 17:04:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 15:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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