首页 > 其他分享 >P1126 - 【提高】英文翻译 -

P1126 - 【提高】英文翻译 -

时间:2025-01-17 17:29:14浏览次数:3  
标签:英文翻译 10 return string 提高 parts num const P1126

难度:8+

输入格式

一个自然数n,0< =n< =2^31-1。

输出格式

输出这个数的英文,最后不要有多余的空格。

输入数据 1

1111111111

输出数据 1

one billion one hundred and eleven million one hundred and eleven thousand one hundred and eleven

 代码:

#include <iostream>
#include <string>
#include <vector>
#include <bits/stdc++.h>
using namespace std;

// 定义数字到英文的映射
const string units[] = {"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
const string teens[] = {"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
const string tens[] = {"", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
const string thousands[] = {"", "thousand", "million", "billion"};

// 将三位数转换为英文
string numberToWords(int num) {
    if (num == 0) return "zero";
    if (num < 10) return units[num];
    if (num < 20) return teens[num - 10];
    if (num < 100) return tens[num / 10] + (num % 10 != 0 ? " " + units[num % 10] : "");
    if (num < 1000) return units[num / 100] + " hundred" + (num % 100 != 0 ? " and " + numberToWords(num % 100) : "");
    return "";
}

// 将大数字转换为英文
string convertToEnglish(long long num) {
    if (num == 0) return "zero";
    vector<string> parts;
    int unit = 0;
    while (num > 0) {
        if (num % 1000 != 0) {
            parts.push_back(numberToWords(num % 1000) + " " + thousands[unit]);
        }
        unit++;
        num /= 1000;
    }
    reverse(parts.begin(), parts.end());
    return parts[0] + (parts.size() > 1 ? " " + parts[1] : "");
}
int main() {
    long long n;
    cin >> n;
    cout << convertToEnglish(n) << endl;
    return 0;
}

标签:英文翻译,10,return,string,提高,parts,num,const,P1126
From: https://blog.csdn.net/MAX20131115/article/details/145211325

相关文章

  • Blazor 通过组件虚拟化提高性能
    了解组件虚拟化如何优化Blazor应用程序的渲染性能.介绍在使用数据驱动的应用程序时,我们迟早要在列表中呈现数量多得令人难以忍受的项目。作为开发人员,我们总是希望用户界面尽可能清晰,并且只包含执行特定操作所需的数据。但是,如果产品所有者要求呈现10000或100000个项目怎......
  • 网络协议的自主研发是指在没有依赖外部技术或标准的情况下,组织或企业自己设计和开发的
    网络协议的自主研发是指在没有依赖外部技术或标准的情况下,组织或企业自己设计和开发的网络协议。这样的协议通常针对特定的需求或场景进行优化,旨在提高效率、安全性、兼容性或满足其他特定功能要求。自主研发的网络协议可能涉及不同的层次,从物理层、数据链路层到应用层。自主研发......
  • 命中索引一定能提高查询速度吗?
    命中索引一定能提高查询速度吗?目录命中索引一定能提高查询速度吗?目录索引的基本原理索引命中与查询性能查询复杂性数据量与索引选择性更新与维护成本过多的索引何时索引能提高查询速度?简单查询高选择性字段适当的索引类型结论答案是否定的,在实际项目中我曾踩过这......
  • 如何通过提高复购率,让你的线下陪玩APP在竞争中脱颖而出?
    在竞争激烈的线下陪玩APP市场,能持续发展的APP不多,关键因素是复购率。一、复购率与平台收益紧密相连复购率指客户首次消费后再次在同一平台消费的比例,对平台收益影响大。当下获取新客户成本高,靠广告投放等吸引新客需大量资金。若客户仅消费一次,平台难盈利,可能连推广成本都......
  • 如何利用可视化工具提高远程设计团队的工作效率
    一、远程设计团队面临的主要挑战远程办公虽然提供了灵活性,但也使得设计团队面临了若干挑战。以下是远程设计团队常见的几大问题:1.时区差异带来的挑战设计团队的成员通常分布在不同的时区,这种地理上的分散性直接影响到团队协作的效率。举例来说,当一个位于美国的设计师完成了设......
  • 提高客户转化率的核心:从协同到行动
    在销售管理中,团队协同效率一直是困扰管理者的核心问题。随着数字化工具的普及,越来越多的销售团队开始借助协同平台来提升内部效率。然而,在实际运用中,许多企业发现仅仅依赖工具并不能完全解决问题,关键还在于对流程的优化和资源的整合。销售流程中的三大痛点1.信息孤岛销售团队......
  • 打卡信奥刷题(599)用C++信奥P7852[普及组/提高] 「EZEC-9」Yet Another Easy Problem
    「EZEC-9」YetAnotherEasyProblem题目描述给定n,mn,mn,m,你需要输出一个长度为......
  • 推荐1款提高办公效率的神器,请低调使用!
    聊一聊重命名软件层出不穷。软件再多,能适合你的,才是最好的。所以,今天继续给大家分享一款重命名软件。可以给所有文件重命名。不知道适不适合你。软件介绍文件批量改名软件CHB这款软件可以对任何文件进行重命名。这是一款简单而且实用的软件。可以修改文件、文档、......
  • 可靠性(Reliability)及其子特性和提高可靠性的技术
            在当今信息技术高速发展的时代,可靠性(Reliability)已成为衡量产品与系统性能的重要标准之一。无论是硬件设备、软件系统,还是复杂的网络系统,可靠性都直接关系到用户体验、业务连续性和系统安全性。本文将详细探讨可靠性的定义、其子特性以及提高可靠性的技术,并结......
  • 如何提高 SpringBoot 的代码质量?
    保持好的代码质量和遵守编码标准是开发可维护和健壮软件的重要方面。在SpringBoot应用程序中,确保始终遵循命名约定、代码结构和其他质量标准是一项艰巨的任务,尤其是当项目的复杂性和规模不断扩大时更是如此。“在本文中,我们将探讨如何使用Java反射来提高SpringBoot......