PAT-Apat甲级题1005(python和c++实现)

PTA | 1005 Spell It Right

1005 Spell It Right

作者 CHEN, Yue

单位 浙江大学

Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output every digit of the sum in English.

Input Specification:

Each input file contains one test case. Each case occupies one line which contains an N (≤10100).

Output Specification:

For each test case, output in one line the digits of the sum in English words. There must be one space between two consecutive words, but no extra space at the end of a line.

Sample Input:

12345

Sample Output:

one five

 万事开头难,先读题!

给定一个非负整数N,你的任务是计算N的所有数字之和,并用英语输出和的每个数字。
输入规范:

每个输入文件包含一个测试用例。每种情况占用一行,其中包含N(≤10100)。
输出规格:

对于每个测试用例,用英文单词在一行中输出总和的数字。两个连续的单词之间必须有一个空格,但行尾不能有多余的空格。

一遍题目读下来,发现本题要求比较少,思路也比较清晰,属于比较简单的题目,但是有些地方也需要细心处理。

老规矩,首先分析题目:

        1, 输入只有一行,输出不允许有多余的空格

        2, 由于需要实现匹配输出,因此需要根据题意设置一个哈希表,用于匹配数字和英文

现在是手搓代码时间!!!

首先,创建用于匹配的哈希表match_,定义变量接收输入,并将输入的每个数字进行相加求和:

对于python来说,我们只需要使用生成式对输入进行处理即可,为了便于后续的操作,这里将生成式转换为str类型,代码如下:

match_ = {
    1:"one", 2:"two", 3:"three", 4:"four", 5:"five", 6:"six", 7:"seven", 8:"eight", 9:"night", 0:"zero"
}
sum_ = str(sum(eval(i) for i in input()))

对于C++来说,定义一个string类型的变量来接收输入,再对其进行遍历求和,将求和结果使用to_string函数再次转换成string类型,但是由于C++中字符存储的核心是ascii码值,因此直接对其中的某个字符进行类型强转,得到的结果将会是对应的ascii码值,为了避免这种情况,我们需要在进行类型强转之前,对其进行    减“0”   ,只有在原来的基础上减去字符“0”的ascii码值,得到的才会是其数字字符对应的数字真值,这点很容易被忽略!(或直接使用其ascii码值之差)代码如下:

string nums;
int sum_ = 0;
string match_[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

int main(){
    cin >> nums;
    for(int i=0; i<nums.size(); i++){
        sum_ += int(nums[i]) - int('0');
    }
    string sum = to_string(sum_);

此后的操作将是对求和结果进行哈希匹配,按照输出其匹配上的结果,在python中,可以使用dict直接实现此操作,在C++中,由于匹配规则较为简单,我们可以直接定义一个长度为10的字符串型数组,按照其下标分别存储对应的英文,对于格式化输出这块,由于要求较为简单,这里将不再赘述,完整版的代码如下:

python:

match_ = {
    1:"one", 2:"two", 3:"three", 4:"four", 5:"five", 6:"six", 7:"seven", 8:"eight", 9:"night", 0:"zero"
}
sum_ = str(sum(eval(i) for i in input()))
for i in range(len(sum_)):
    if i > 0:
        print(' ',end="")    
    print(match_[eval(sum_[i])], end="")

C++:


#include<iostream>
#include<string>
using namespace std;

string nums;
int sum_ = 0;
string match_[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

int main(){
    cin >> nums;
    for(int i=0; i<nums.size(); i++){
        sum_ += int(nums[i]) - int('0');
    }
    string sum = to_string(sum_);
    for(int i=0;i<sum.size(); i++){
        if (i > 0)cout<<" ";
        int temp = int(sum[i]) - int('0');
        cout << match_[temp];
    }
    return 0;
}

最后·附上AK截图:

python:

C++:

 写在后面:

        以上就是本题的全部内容,由于题目较为简单,故此处使用的方法也比较直接,如果您对以上解法有什么意见或者建议,欢迎评论区交流,欢迎您的斧正!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kubernetes-深入理解Pod对象:调度

一、创建一个Pod的工作流程 Pod创建流程&#xff1a; 1、kubectl 向 APIServer 发起一个 Pod 创建请求。 2、APIServer 接受到 Pod 创建请求后&#xff0c;不是直接创建 Pod&#xff0c;而是将 Pod 的数据写入 etcd 中&#xff0c;待写入操作执行完成&#xff0c;APIServer 将…

vue3 之 组合式API - setup选项

首先我们先看下setup选项的写法和执行时机 setup选项中写代码的特点 语法糖 总结 setup选项的执行时机&#xff1f; beforeCreate钩子之前 自动执行 setup写代码的特点是什么&#xff1f; 定义数据 函数 然后以对象方式return 经过语法糖的封装更简单的使用组合式API set…

mybatis-plus 3.5.1 自动填充无效问题

使用了mybatis-plus的自动填充功能,但是我debug的时候进都进不去 这是为什么? 我在新增的时候连insertFill方法都进不去 原因是,我没有在我的新增实体类上加上 fill FieldFill.INSERT 还有些问题是配置类, 没有扫描到的问题,这个网上一搜一大把 注意,这个实体类是你新增的…

BUUCTF-Real-[struts2]s2-013

struts2的标签中 <s:a> 和 <s:url> 都有一个 includeParams 属性&#xff0c;可以设置成如下值none - URL中不包含任何参数&#xff08;默认&#xff09; get - 仅包含URL中的GET参数 all - 在URL中包含GET和POST参数 当includeParamsall的时候&#xff0c;会将本次…

ep-bg-purple-dark element-plus 不生效

element-plus 官网里面的 Layout 布局中的示例&#xff0c;官方文档中添加类名 class"grid-content ep-bg-purple-dark" 有相应的样式 import element-plus/theme-chalk/index.css //默认css样式 英文 import element-plus/dist/index.css 两…

ctfshow web-76

开启环境: c?><?php $anew DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString(). );} exit(0); ?> cinclude("/flagc.txt");exit(); c?><?php $anew DirectoryIterator("glob:///*"); foreach($a…

图解Java多线程设计模式

第5章Producer-Consumer模式 Producer是生产者的意思&#xff0c;指的是生成数据的线程。Consumer则是"消费者"的意思&#xff0c;指的是使用数据的线程。生产者安全地将数据交给消费者。但当虽然仅是这样看似简单的操作&#xff0c; 但当生产者和消费者以不同的线…

XUbuntu22.04之跨平台远程控制工具(二百一十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

学术研究新突破:发现新型相变存储器

斯坦福大学的研究人员开发出了一种新型相变存储器&#xff0c;该存储器有望帮助计算机更快、更高效地处理大量数据。在最近发表于《自然通讯》的一篇论文中&#xff0c;研究人员详细介绍了这项技术&#xff0c;表明一种新材料可能会使基于电阻高低状态切换以创建计算机数据“0”…

算法设计与分析实验:回溯

目录 一、组合总和 1.1 具体思路 1.2 思路展示 1.3 代码实现 1.4 复杂度分析 1.5 运行结果 二、全排列 2.1 具体思路 2.2 思路展示 2.3 代码实现 2.4 复杂度分析 2.5 运行结果 三、N皇后问题 3.1 具体思路 3.2 思路展示 3.3 代码实现 3.4 复杂度分析 3.5 运行…

jsp自助点餐管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 自助点餐管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0…

关于Ubuntu下docker-mysql:ERROR 2002报错

报错场景&#xff1a; mysql容器创建好后登录mysql时即使密码正确也是报出下方提示&#xff1a; 原因是在创建mysql容器在创建时本地目录缺失&#xff0c; 先去自建一个目录&#xff0c;例如&#xff1a; /opt/my_sql 正确完整目录如下&#xff1a; docker run --namemys…

深度学习水论文怎么缝模块?搭积木永不过时!(附80个即插即用模型)

深度学习如何创新&#xff1f;如何水模型&#xff1f;总结来说就八个字&#xff1a;排列组合&#xff0c;会讲故事。说直白点&#xff0c;就是缝模块。 先看看别人怎么做&#xff0c;然后根据自己的实际情况将这些模块来一波随机组合&#xff0c;这样效率会高很多。我这边已经…

《计算机网络简易速速上手小册》第9章:物联网(IoT)与网络技术(2024 最新版)

文章目录 9.1 IoT 架构与通信协议 - 打造智能世界的秘诀9.1.1 基础知识9.1.2 重点案例&#xff1a;使用 Python 和 MQTT 实现智能家居照明系统准备工作Python 脚本示例发布者&#xff08;灯光控制&#xff09;订阅者&#xff08;灯光状态接收&#xff09;&#xff1a; 9.1.3 拓…

浪漫的通讯录(顺序表篇)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 我会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能…

几个简单的shell编程

一、输出1到100之间的整数之和 sum0 i1 for i in {1..100} dosum$((sumi)) done echo "The sum of integers from 1 and 100 is:$sum"sum0 for ((i0;i<100;i)) dosum$[$sum$i] #sum$((sumi)) done echo "The sum of integers between 1 and 100 is:$sum&quo…

中国象棋基础

帅&#xff08;将&#xff09;的运用原则&#xff1a; &#xff08;1&#xff09;帅走直线&#xff0c;前进后退均可 &#xff08;2&#xff09;一次只能走一格 &#xff08;3&#xff09;活动范围在“九宫”之内 &#xff08;4&#xff09;可行处可吃敌子 &#xff08;5&…

多线程-定时器

目录 1.定时器是什么 2.标准库中的定时器 3.实现定时器 3.1 MyTimer类 1.首先Timer 类提供的核⼼接⼝为 schedule, ⽤于注册⼀个任务, 并指定这个任务多⻓时间后执⾏. 2.Timer 实例中, 通过 PriorityQueue 来组织若⼲个 Task 对象. 通过 schedule 来往队列中插⼊⼀个个 Task …

中缀转后缀

概念 什么是后缀表达式&#xff1f; 后缀表达式&#xff0c;其实就是一个中缀表达式 AOB > ABO &#xff08;A、B是式子、O 为运算符&#xff09;&#xff0c;将运算符向后放 中转后举例 中缀表达式&#xff1a;&#xff08;a b&#xff09;* c - (d / c) 首先&#xff…

jupyter notebook找不到自己创建的环境 无法识别 解决方法

问题描述&#xff1a; 这是最近遇到的一个关于Anaconda的小问题。 用conda创建一个名为 pytorch 的环境想学习pytorch&#xff0c;安装完一切之后在 jupyter 中找不到 pytorch 这个虚拟环境&#xff0c;与之相关的库也都无法调用 解决方法&#xff1a; 实际上是由于在虚拟环境…