拼写正确(3月20日)
题目描述
给定一个非负整数 N,你的任务是计算 N 的所有数字的总和,并以英语输出总和的每个数字。
输入格式
共一行,包含一个整数 N,整数 N 可能会出现前导0,比如:00123,对应的整数是123。
输出格式
共一行,用英语输出总和的每个数字,单词之间用空格隔开。
样例
输入数据 1
12345
输出数据 1
one five
数据范围
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;
}