当前位置: 首页 > news >正文

PAT 乙级题目讲解:1016《部分A+B》

✅ PAT 乙级题目讲解:1016《部分A+B》


🧩 题目简

题目摘要:本题目要求从两个正整数中分别提取指定数字并拼接成新整数,计算其和。核心考察字符串提取与数字构造的模拟实现,时间复杂度O(n)\mathcal{O}(n)O(n),空间复杂度O(1)\mathcal{O}(1)O(1)。适合入门练习数位拆分与拼接技巧。

本题考查的是字符串提取 + 数字构造的模拟实现问题。

给定两个正整数AAABBB,以及两个数字DAD_ADADBD_BDB。我们需要从AAA中提取出所有为DAD_ADA的数字,并按原顺序拼接成一个新整数PAP_APA;同理从BBB中提取出所有为DBD_BDB的数字,拼接成PBP_BPB,并输出PA+PBP_A + P_BPA+PB


🧪 样例分析

输入样例 1:

3862767 6 13530293 3
  • A=3862767,DA=6A = 3862767, D_A = 6A=3862767,DA=6→ 提取出数字 6,PA=66P_A = 66PA=66
  • B=13530293,DB=3B = 13530293, D_B = 3B=13530293,DB=3→ 提取出数字 3,PB=33P_B = 33PB=33
  • 输出PA+PB=66+33=99P_A + P_B = 66 + 33 = 99PA+PB=66+33=99

输出:

99

输入样例 2:

3862767 1 13530293 8
  • AAA中没有数字 1,PA=0P_A = 0PA=0
  • BBB中没有数字 8,PB=0P_B = 0PB=0
  • 输出0+0=00 + 0 = 00+0=0

输出:

0

🔍 解题思路

📎 变量说明

变量名数据类型含义
aint输入的整数AAA
daint要提取的数字DAD_ADA
bint输入的整数BBB
dbint要提取的数字DBD_BDB
pint计算得出的新整数PAP_APAPBP_BPB

✅ Step 1:读取输入数据

从输入中读取整数AAABBB以及它们对应的数字DAD_ADADBD_BDB

cin>>a>>da>>b>>db;

✅ Step 2:定义函数p(x, dx)提取部分数字

定义一个函数p来提取给定整数xxx中所有为dxdxdx的数字,并拼接成一个新整数。

intp(intx,intdx){intpx=0;while(x){if(x%10==dx){px=px*10+dx;}x/=10;}returnpx;}
  • 每次从xxx中提取最低位数字,如果数字等于dxdxdx,就拼接到px上;
  • 最后返回拼接得到的结果。

✅ Step 3:计算并输出PA+PBP_A + P_BPA+PB

通过调用p(a, da)p(b, db)分别得到PAP_APAPBP_BPB,然后输出它们的和。

cout<<p(a,da)+p(b,db);

✅ 完整代码

#include<bits/stdc++.h>usingnamespacestd;inta,da,b,db;intp(intx,intdx){intpx=0;while(x){if(x%10==dx){px=px*10+dx;}x/=10;}returnpx;}intmain(){cin>>a>>da>>b>>db;cout<<p(a,da)+p(b,db);}

🚧 常见错误提醒

错误类型具体表现
字符串提取错误提取数字时未按正确顺序拼接,导致结果错误
输出格式错误输出时未按照题目要求格式打印,可能丢失空格或换行

✅ 总结归纳

📌 核心方法总结

通过字符串提取模拟提取数字,使用数位拆分和重组来拼接结果。

📋 技术要点回顾

  • 数位拆分与拼接的标准方法;
  • 数字匹配与提取技巧;
  • 避免溢出的边界条件处理。

📊 复杂度分析

  • 时间复杂度:O(n)\mathcal{O}(n)O(n)
  • 空间复杂度:O(1)\mathcal{O}(1)O(1)

其中nnn为输入数据中最大数字的位数(最多 9 位)。


🧠 思维拓展

  • 扩展思考:如果题目要求提取数字并按奇偶性筛选拼接,该如何实现?
  • 类似题目:数字构造类问题,如回文数判断、数字逆序等;
  • 其他思路:可将函数p中的数位提取改为直接使用字符串操作。
http://www.jsqmd.com/news/1120689/

相关文章:

  • 新能源汽车热管理系统核心零部件及工作原理详解
  • PyMiniRacer异常处理全攻略:解析错误类型与调试技巧
  • Kimi Chat vs GPT-4o中文编程实测:从LeetCode到Django开发
  • 炉石传说加速器:用HsMod提升游戏效率300%的终极指南
  • Xournal++:一款彻底改变你数字笔记体验的开源手写笔记神器
  • uiv开发实战:从零开始构建一个完整的管理后台界面
  • 如何快速实现社交媒体数据采集:Python开发者的完整指南
  • 终极炉石传说增强插件HsMod:三步安装解锁50+实用功能
  • Java并发编程:Callable与ReentrantLock实战解析
  • 豆包AI深度评测:对话连续性、风格复刻与模糊指令解析实战
  • 计算机毕业设计之基于springboot框架的大学生体测管理系统
  • 计算机毕业设计之基于大数据的显示器社交媒体情感分析
  • Wireshark实战解析SSL/TLS握手:从密码学原理到网络包诊断
  • 30分钟上手NCSN:基于PyTorch的快速实现教程
  • 多层超表面空间板设计与电磁调控技术解析
  • Agent Skills技能质量保证:建立技能开发流程的7个步骤
  • 从源码到APK:FFmpeg-Android的编译原理与自定义构建指南
  • DeepSeek V4 Pro实测:国产大模型的性能-成本新基准
  • 西工大软院大二数据库并发控制:nwpu-cram实验完全指南
  • 【学习记录】Week10(四):综合实战——Off-by-one 与 Tcache 的致命探戈
  • Flutter Planets项目解析:如何快速创建Material Design风格的行星卡片UI
  • BK7259 WiFi6音视频SoC:智能家居视频流处理技术解析
  • 如何自定义JupyterHub部署Docker:配置自定义Notebook镜像和用户管理策略
  • 如何在JupyterLab中使用Vim快捷键?jupyterlab-vim完整安装指南
  • Attributed框架源码解析:理解其设计模式与实现原理
  • 计算机毕业设计之基于大数据的社交媒体情感分析与危机预警研究
  • RTL8761BTV蓝牙双模芯片特性与应用解析
  • 深入解析TCP SYN Flood攻击:从协议原理到防御实战
  • Gloom的Compose UI组件库:可复用UI组件开发实战
  • PAT 甲级题目讲解:1011《World Cup Betting》