P1617 爱与愁的一千个伤心的理由【洛谷算法习题】
P1617 爱与愁的一千个伤心的理由网页链接P1617 爱与愁的一千个伤心的理由题目背景本道题目隐藏了两首歌名找找看哪~~~《爱与愁的故事第一弹·heartache》第二章。经历了心痛后爱与愁大神不行了。题目描述月落乌啼问爱与愁大神为什么爱与愁大神写了一个数字n nnn ≤ 9999 n \le 9999n≤9999说翻译成英语就知道为什么了。月落乌啼接过这个数字后本想翻译成英语但是班主任叫他去帮个忙。他想尽快知道答案于是这个艰巨的任务就拜托你了。标准美式英语仅在末两位 $ \le 10$ 时加and且没有连字符。输入格式只有一行一个数n nnn ≤ 9999 n \le 9999n≤9999输出格式一行英文表示n nn翻译成英语的答案。输入输出样例 #1输入 #15208输出 #1five thousand two hundred and eight输入输出样例 #2输入 #25280输出 #2five thousand two hundred eighty输入输出样例 #3输入 #35000输出 #3five thousand输入输出样例 #4输入 #45028输出 #4five thousand and twenty eight说明/提示输出行初不大写。按标准美式英语输出即两个非零的数中间没零则不加and行末无句号。解题思路本题是数字转英文单词的模拟题需要根据美式英语规则将一个不超过 9999 的整数翻译成对应的英文表达。核心在于处理千位、百位、十位、个位的拼接以及特殊连接词and的使用条件。1. 问题等价转化数字范围输入为整数n nn且0 ≤ n ≤ 9999 0 \le n \le 99990≤n≤9999。可直接作为字符串读入逆序后方便按位处理。英文表达规则数字0 00单独输出zero。千位数字后接thousand百位数字后接hundred。十位为2 ∼ 9 2\sim92∼9时使用twenty、thirty等词十位为1 11时与个位组合成ten、eleven等特殊词十位为0 00时直接跳过。个位为1 ∼ 9 1\sim91∼9时输出对应单词个位为0 00且十位非0 00时不输出个位。and的添加规则标准美式英语当存在更高位千位或百位且较低两位需要表达时通常需要使用and连接。具体判断若百位为0 00但十位或个位不为0 00且千位存在则在千位后添加and。若百位不为0 00十位为0 00个位不为0 00则在百位后添加and。其他情况不加and。例如5028→ five thousandandtwenty eight5208→ five thousand two hundredandeight5280→ five thousand two hundred eighty不加and。2. 算法实现字符串预处理读入数字字符串s若长度为1 11且为0则直接输出zero。否则将字符串反转存入r使r[i]对应原数字从低位开始的第i ii位0 00个位1 11十位2 22百位3 33千位。从高位到低位遍历i len − 1 → 0 i \text{len}-1 \to 0ilen−1→0千位与百位i 1 i 1i1若当前位非零输出对应数字单词和单位thousand或hundred。百位特殊处理i 2 i 2i2若百位为0 00且后面两位十位或个位中有非零则输出and用于连接千位和后面的数字。十位处理i 1 i 1i1若十位为0 00当个位和百位都非零时输出and例如5208 52085208中的百位2 22和个位8 88。若十位非零且不为1 11输出对应的twenty~ninety单词。若十位为1 11直接输出对应的ten~nineteen单词由于已覆盖个位输出后即可结束。个位处理i 0 i 0i0若个位非零输出对应单词。输出格式各单词之间用空格分隔行末无多余空格首字母不需要大写。3. 复杂度分析时间复杂度O ( L ) O(L)O(L)其中L LL为数字位数L ≤ 4 L \le 4L≤4常数级。空间复杂度O ( 1 ) O(1)O(1)仅使用几个预定义数组和变量。总结本题通过字符串反转将数字各位与单位数组索引对齐按从高位到低位的顺序依次输出并根据题目规定的美式英语and使用条件进行判断。整个模拟过程清晰分支简单适合直接实现。代码简要说明预定义数组a[10]数字0 ∼ 9 0\sim90∼9的英文单词索引0 00为空。b[4]单位数组b[2]hundred,b[3]thousand。c[10]十位2 ∼ 9 2\sim92∼9的英文单词。d[10]数字10 ∼ 19 10\sim1910∼19的英文单词。主流程读入字符串s特判单个字符0。反转得到r从高位向低位遍历。根据i的值分别处理千位/百位、十位、个位并在适当位置输出and。遇到十位为1 11时直接输出 teens 单词并返回避免重复输出个位。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N1e310;constll INF1e18;constll M1e610;constll mod1e97;string a[10]{,one,two,three,four,five,six,seven,eight,nine};string b[4]{,,hundred,thousand};string c[10]{,,twenty,thirty,forty,fifty,sixty,seventy,eighty,ninety};string d[10]{ten,eleven,twelve,thirteen,fourteen,fifteen,sixteen,seventeen,eighteen,nineteen};intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);string s;cins;if(s.size()1){if(s[0]0){coutzero;return0;}couta[s[0]-0];return0;}string rs;reverse(r.begin(),r.end());for(ll is.size()-1;i0;i--){if(i1r[i]0){couta[r[i]-0] b[i] ;}if(i2){if(r[i]0(r[1]!0||r[0]!0))coutand ;}if(i1){if(r[i]0){if(r[0]!0r[2]!0)coutand ;}else{ll xr[i]-0;if(x!1){coutc[x] ;}else{xr[0]-0;coutd[x] ;return0;}}}if(i0)couta[r[i]-0];}return0;}

相关新闻

如何用 BETAFPV Configurator 快速完成遥控器配置与固件更新(新手指南)

如何用 BETAFPV Configurator 快速完成遥控器配置与固件更新(新手指南)

如何用 BETAFPV Configurator 快速完成遥控器配置与固件更新(新手指南) 【免费下载链接】BETAFPV_Configurator 项目地址: https://gitcode.com/gh_mirrors/be/BETAFPV_Configurator BETAFPV Configurator 是一款开源的 BETAFPV 遥控器配置工具&…

2026/8/24 5:45:00 阅读更多 →
量化交易技术解析:高频策略如何影响市场与散户应对之道

量化交易技术解析:高频策略如何影响市场与散户应对之道

1. 这篇文章真正要解决的问题 量化交易,这个听起来充满数学与科技光环的词汇,在普通投资者眼中往往意味着“神秘”、“高效”和“不可战胜”。当市场出现剧烈波动,你的持仓瞬间被击穿止损线,或者眼睁睁看着股价在几毫秒内完成“天…

2026/8/23 8:20:18 阅读更多 →
Adobe-GenP 闪退与报错 -2147024891 三步排查指南

Adobe-GenP 闪退与报错 -2147024891 三步排查指南

Adobe-GenP 闪退与报错 -2147024891 三步排查指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP 打完补丁后 PS/PR/AE 闪退,或 NSudo 启动时…

2026/8/23 5:23:44 阅读更多 →

最新新闻

低代码转型关键期,企业如何选对平台少走弯路

低代码转型关键期,企业如何选对平台少走弯路

老张是一家制造企业的IT负责人,上个月刚结束了一场为期两天的低代码平台选型会。桌上摊着四家厂商的PPT,每一家都宣称自己能“赋能业务”、“三天上线”、“降本增效”。可当他追问“AI能力如何与现有系统融合”时,大部分销售开始含糊其辞&am…

2026/8/24 15:40:58 阅读更多 →
Visual C++ 运行库安装失败如何三步解决:从闪退到卡住的完整排障路径

Visual C++ 运行库安装失败如何三步解决:从闪退到卡住的完整排障路径

Visual C 运行库安装失败如何三步解决:从闪退到卡住的完整排障路径 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist Visual C 运行库是 Windows 上大量…

2026/8/24 15:40:58 阅读更多 →
MGit:3步上手的免费Android Git客户端,手机上克隆、提交、推送全搞定

MGit:3步上手的免费Android Git客户端,手机上克隆、提交、推送全搞定

MGit:3步上手的免费Android Git客户端,手机上克隆、提交、推送全搞定 【免费下载链接】MGit A Git client for Android. 项目地址: https://gitcode.com/gh_mirrors/mg/MGit MGit是一款免费的Android Git客户端,运行在Android 5.0及以…

2026/8/24 15:40:58 阅读更多 →
带货视频生成工具全流程项目复盘

带货视频生成工具全流程项目复盘

我们是服务家居类中小商家的代运营小团队,一共4个人,岗位分别是素材策划、剪辑、投放对接、品控,我是团队里的素材策划岗。之前连续两周我们卡在了上新季的千川带货素材产能缺口上,每周要出30条不同版本的15秒短视频,纯…

2026/8/24 15:40:58 阅读更多 →
AI商品图从白底原图到电商主图海报项目复盘

AI商品图从白底原图到电商主图海报项目复盘

AI商品图从白底原图到电商主图海报项目复盘我所在小型电商视觉小组一共三人,岗位包含商品运营、视觉生成、质检审核,主要服务家居小件、日用百货类商家,产出商品白底主图、场景渲染图、活动海报以及投放配图。本次项目遇到的卡点集中在商家只…

2026/8/24 15:40:57 阅读更多 →
yt-dlp-gui:免终端、粘贴链接 3 分钟下好任意视频

yt-dlp-gui:免终端、粘贴链接 3 分钟下好任意视频

yt-dlp-gui:免终端、粘贴链接 3 分钟下好任意视频 【免费下载链接】yt-dlp-gui Windows GUI for yt-dlp 项目地址: https://gitcode.com/gh_mirrors/yt/yt-dlp-gui 如果你也曾复制好视频地址,却不知道该往哪贴、用什么工具下,yt-dlp-g…

2026/8/24 15:39:57 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →