每日一题1

拼写正确(3月20日)

题目描述

给定一个非负整数 N,你的任务是计算 N 的所有数字的总和,并以英语输出总和的每个数字。

输入格式

共一行,包含一个整数 N,整数 N 可能会出现前导0,比如:00123,对应的整数是123。

输出格式

共一行,用英语输出总和的每个数字,单词之间用空格隔开。

样例

输入数据 1

12345

Copy

输出数据 1

one five

Copy

数据范围

0 ≤ N≤ 10^{100}


看到数据范围这么大,果断选择字符串输入

用了两个字符串数组啊,第一个存输入的数字 第二个存 和的每一位数字

为了防止int的范围不够 用了longlong

其实函数里面 用 a =="1" 这样是不是严谨一点 毕竟也是字符串这样 不过不写也过了(嘻嘻)

因为取余是从最后一位取余的 所以我们倒着输出 再看这个a[i] 是几输出就ok了

AC代码

#include <bits/stdc++.h>
using namespace std;
string n, a;
long long ant = 0, k, m;
long long q = 0;

void zimu(int a) {
    if (a == 1)
        cout << "one" << " ";
    else if (a == 2)
        cout << "two" << " ";
    else if (a == 3)
        cout << "three" << " ";
    else if (a == 4)
        cout << "four" << " ";
    else if (a == 5)
        cout << "five" << " ";
    else if (a == 6)
        cout << "six" << " ";
    else if (a == 7)
        cout << "seven" << " ";
    else if (a == 8)
        cout << "eight" << " ";
    else if (a == 9)
        cout << "nine" << " ";
    else
        cout << "zero" << " ";
}

int main() {
    cin >> n;

    for (long long i = 0; n[i] != '\0'; i++) {
        k = n[i] - '0';
        ant += k;
    }

    while (ant != 0) {
        m = ant % 10;
        ant /= 10;
        a[q] = m;
        q++;
    }

    for (long long i = q - 1; i >= 0; i--) {
        int c;
        c = a[i];
        zimu(c);
    }

    return 0;
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值