【趣学Python算法100例】抓交通肇事犯

news2024/12/23 16:59:45

问题描述

一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记下了车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:4位的车号刚好是一个整数的平方。请根据以上线索求出车号。

题目解析

  1. 甲的描述:前两位数字相同
    • 甲目击车号的前两位数字相同,说明车号的前两位数字可以表示为 aa 的形式,例如 7744 中前两位是 77
  2. 乙的描述:后两位数字相同,且与前两位不同
    • 乙看到车号的后两位数字也相同,但不同于前两位数字。即车号的后两位是 bb,并且 a ≠ b,例如 7744 中后两位是 44,且 7 ≠ 4
  3. 丙的描述:车号是一个整数的平方
    • 丙是数学家,他指出这个四位数是一个整数的平方。也就是说,我们要求的车号是某个整数的平方结果。例如,7744 是 88 的平方(88² = 7744)。

解题思路

为了求解这个问题,我们可以将解题过程分为以下几个步骤:

  1. 确定范围
    • 因为车号是一个四位数,所以我们要求的整数平方必须在四位数的范围内。四位数的最小值是 1000,最大值是 9999。对应的整数平方范围就是 32² = 102499² = 9801。因此,我们只需要枚举 32 到 99 之间的整数,计算它们的平方值。
  2. 判断车号是否符合条件
    • 对于每个平方值,我们需要检查是否满足前两位相同、后两位相同、且前后两位不同的条件。可以通过将数字转换为字符串形式,然后分别比较前两位和后两位数字。
  3. 输出结果
    • 一旦找到符合条件的车号,我们就可以输出结果并结束搜索。

代码实现

import math

# 遍历所有可能的四位数
for i in range(32, 100):  # 从32开始到99结束,因为32^2=1024,99^2=9801,刚好覆盖四位数
    num = i ** 2
    num_str = str(num)
    
    # 检查前两位是否相同,后两位是否相同,且前后两位不同
    if num_str[0] == num_str[1] and num_str[2] == num_str[3] and num_str[0] != num_str[2]:
        print(f"车号是: {num}")
        break

详细解释:

  1. 遍历范围确定
    • 使用 for i in range(32, 100) 来遍历 32 到 99 的整数。因为只有这一区间的数的平方结果才会是四位数。
  2. 平方计算
    • 对每个整数 i,我们计算它的平方数 num = i ** 2。这些平方数就是可能的四位车号。
  3. 字符串处理
    • 将平方数转换为字符串:num_str = str(num)。这是为了方便我们逐位检查车号的特征。
  4. 特征检查
    • 通过 num_str[0] == num_str[1] 检查前两位数字是否相同。
    • 通过 num_str[2] == num_str[3] 检查后两位数字是否相同。
    • 通过 num_str[0] != num_str[2] 检查前两位和后两位是否不同。
  5. 结果输出
    • 一旦找到符合条件的四位车号,直接打印并终止循环。

结果与验证:

运行这段代码后,输出结果是:

车号是: 7744

通过验证:

  • 7744 是 88² 的结果,符合丙的描述。
  • 7744 的前两位是 77,后两位是 44,前两位与后两位不同,符合甲和乙的描述。

总结:

这个问题通过解析题目中的条件并结合编程进行枚举和判断,最终找到了符合要求的车号。使用数学推理可以大大缩小解题范围,而编程的穷举搜索则确保了最终结果的正确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2136179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux - make/Makefile工具的基础使用

文章目录 一、介绍二、工作原理三、使用1、make的使用2、make的常用选项3、Makefile文件 四、总结 一、介绍 make工具和 Makefile 文件是 Linux下非常重要的自动化构建工具, Makefile定义了项目的编译规则,指示make如何编译和链接源代码以生成可执行文件…

[wowoza]使用rtsp协议向wowza推流方法

1、测试前要关闭电脑防火墙 2、测试前要关闭推流验证功能 3、3、关闭回放验证功能 上面设置修改后,要点击restart重启 4、查看服务器ip、端口号、application test player可以预览推流的音视频 有时候需要缓存 url里面注意没有空格

牛客练习赛128(上)

Cidoai的幂次序列 题目描述 登录—专业IT笔试面试备考平台_牛客网 运行代码 #include <bits/stdc.h> using namespace std; signed main(){long long n,k;cin>>n>>k;cout<<2<<\n;cout<<n-1<< <<1<<\n;return 0; } 代…

D - 1D Country(AtCoder Beginner Contest 371)

题目链接: D - 1D Country (atcoder.jp) 题目描述: 数据范围: 输入输出: 题目分析: 典型的l, r 区间问题&#xff0c;即是前缀和问题&#xff0c;但是注意到数据范围, 数据范围1e-9 到 1e9 数据范围&#xff0c;要是从最小到最大直接for循环去模拟的话&#xff0c;时间复杂度…

CMake构建学习笔记16-使用VS进行CMake项目的开发

文章目录 1. 概论2. 详论2.1 创建工程2.2 加载工程2.3 配置文件2.4 工程配置2.5 调试执行 3. 项目案例4. 总结 1. 概论 在之前的系列博文中&#xff0c;我们学习了如何构建第三方的依赖库&#xff0c;也学习了如何去组建自己的CMake项目&#xff0c;尤其是学习了CMake的核心配…

分享六款小众宝藏软件,建议收藏!

分享6款小众却实用的宝藏电脑软件&#xff0c;个个都有独特的作用&#xff0c;可以提高效率、提升体验感&#xff01; 1.Clover 一个超轻量级的文件夹管理工具&#xff0c;跟 Windows 资源管理器差不多。但用 Clover 感觉就像用 Chrome 来整理文件似的。 它最棒的功能就是能像…

【python计算机视觉编程——10.OpenCV】

python计算机视觉编程——10.OpenCV 10.OpenCV10.2 OpenCV基础知识10.2.1 读取和写入图像10.2.2 颜色空间10.2.3 显示图像及结果 10.3 处理视频10.3.1 视频输入10.3.2 将视频读取到NumPy数组中 10.4 跟踪10.4.1 光流10.4.2 Lucas-Kanade算法使用跟踪器使用发生器 10.5 更多示例…

计算架构模式之负载均衡技巧

通用负载均衡算法 负载均衡算法 -轮询 & 随机 如果服务器挂掉了&#xff0c;那么负载均衡器还是可以感知到的&#xff0c;因为连接已经断掉了。 负载均衡算法-加权轮询 假设你有4核的和8核的&#xff0c;由于你的程序没有办法跑完CPU&#xff0c;那么有可能出现4核的和8核…

xmake vscode+clangd实现c/c++程序更精确跳转、补全

clangd相比与vscode自带的c/c插件要好用很多&#xff0c;使用xmake搭配vscode开发c/c程序时&#xff0c;可以通过下面方法使用clangd。 生成compile_commands.json 好像是叫什么compile database&#xff0c;xmake可以使用下面两种方式生成。 1、手动生成 xmake project -k…

[linux基础知识]教你使用vim和ctags阅读linux内核源码

1 安装ctags apt install ctags 2 内核源码目录下添加索引 使用下面命令&#xff0c;添加索引成功后&#xff0c;内核目录下会生成tags 索引文件。 ctags -R 3 vim使用索引阅读源码 跳转到函数变量定义与返回 #跳到函数或者变量定义 Ctrl] #返回 Ctrlo 光标移动到需要…

九九乘法表-for-python

for i in range(1, 10):for j in range(1, i):print(f"{j}*{i}{i*j}\t", end )print()运行结果截图&#xff1a;

Linux 离线安装 Docker

一、安装 docker 1. 下载 Docker 安装包 https://download.docker.com/linux/static/stable/x86_64/ 2. 解压安装包 tar -xvf docker-27.1.0.tgz mv docker/* /usr/bin/3. 将 docker 注册为 service 服务 vim /etc/systemd/system/docker.servicedocker.service [Unit] Des…

学习笔记 韩顺平 零基础30天学会Java(2024.9.14)

P547 Collections工具类2 P554 泛型引入 P555 泛型入门 ArrayList<Dog>arrayList new ArrayList<Dog>()//在这里可以理解为这个arrayList里面只能放Dog类型&#xff0c;就是限制了类型 P556 泛型说明 泛型就是可以代指一类数据类型&#xff0c;可以是Integer也可以…

哪个虚拟机软件在 Mac 上更好用,Mac 虚拟机会影响性能吗?

虚拟机如今已经成为许多用户工作生活不可缺少的工具之一&#xff0c;尤其是对于需要经常切换使用不同系统的用户来说&#xff0c;虚拟机提供了一个便捷而有效的操作平台&#xff0c;解决用户跨系统工作的问题。然而&#xff0c;当我们考虑在Mac上下载运行虚拟机时&#xff0c;会…

艾体宝洞察丨一文读懂最新密码存储方法,揭秘密码存储常见误区!

在信息安全的诸多领域之中&#xff0c;密码的安全存储无疑已然成为最为核心的问题之一。随着攻击技术的不断演进&#xff0c;传统的密码存储方法已无法抵御现代复杂的威胁。更为安全、健壮的密码存储机制也成为当代信息安全从业者的关注点。本篇文章将引入并介绍密码存储中的基…

交叉编译工具链的安装及带wiringPi库的交叉编译实现

交叉编译工具链的安装及带wiringPi库的交叉编译实现 交叉编译的概念交叉编译工具链的安装下载交叉编译工具链配置环境遍变量编译程序到ARM平台 带wiringPi库的交叉编译下载编译wiringPi库调用树莓派的wringPi库 交叉编译的概念 交叉编译是在一个平台上生成另一个平台上的可执行…

【资料分析】平均倍数类

平均 观察选项&#xff0c;差距较大&#xff0c;大胆约分即可 很少的情况下&#xff0c;选项相差很近不能随便约分 倍数 第N次注意增长率是否为下降&#xff01; 问的是基期倍数比哦 平均增长量 十三五这种明确问法&#xff0c;一定是五年 属于有往前推的A和不往前推的…

智能智造和工业软件研发平台SCSAI功能介绍

用爱编程30年&#xff0c;倾心打造工业和智能智造软件研发平台SCIOT,用创新的方案、大幅的让利和极致的营销&#xff0c;致力于为10000家的中小企业实现数字化转型&#xff0c;打造数字化企业和智能工厂&#xff0c;点击上边蓝色字体&#xff0c;关注“AI智造AI编程”或文末扫码…

掌握Transformer之深入多头注意力机制

01 引言 这是我关于Transformer系列的第三篇文章。在在前两篇文章中&#xff0c;我们了解了什么是Transformer、Transformer的架构以及其各组件的工作原理。在本文中&#xff0c;我们将进一步深入探讨多头注意力机制&#xff0c;它是Transformer的大脑。 闲话少说&#xff0…

每天五分钟玩转深度学习PyTorch:模型参数优化器torch.optim

本文重点 在机器学习或者深度学习中,我们需要通过修改参数使得损失函数最小化(或最大化),优化算法就是一种调整模型参数更新的策略。在pytorch中定义了优化器optim,我们可以使用它调用封装好的优化算法,然后传递给它神经网络模型参数,就可以对模型进行优化。本文是学习第…