PAT乙级1002写出这个数(20分)

简介: PAT乙级1002写出这个数(20分)

题目描述:


读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。


输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10

100


输出格式:

在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。


输入样例:

1234567890987654321123456789

输出样例:


yi san wu


解题思路:

这里我自己也是没做出来,看了柳婼的题解后才是有了一点点思路,果然大神就是大神,代码简洁。思路牛逼。

由于题目给出的数字很大所以不能用int类型读入,我试了long 和long long也不行,所以我们就选择使用字符串来读入,然后把字符串的每个字符转换成整数,用sum累加起来,最后再把sum转换成字符串,同理就可以得到sum上的每个字符的数字。

解题代码:


#include<iostream> 
#include <string>
#include<vector>
using namespace std;
int main (){
    string a;
    cin>>a;
    int sum=0;
    for(int i=0;i<a.length();i++){
      sum+=a[i]-'0';
  }
    string arr[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    string s=to_string(sum);
    for(int i=0;i<s.length();i++){
      if(i!=0) cout<<" ";
      cout<<arr[s[i]-'0'];
  }
}
相关文章
|
8月前
1057 数零壹 (20 分)
1057 数零壹 (20 分)
1057 数零壹 (20 分)(C++)
给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0、多少 1。例如给定字符串 PAT (Basic),其字母序号之和为:16+1+20+2+1+19+9+3=71,而 71 的二进制是 1000111,即有 3 个 0、4 个 1。
135 0
1057 数零壹 (20 分)(C++)
7-40 最大的数 (10 分)
7-40 最大的数 (10 分)
121 0
7-40 最大的数 (10 分)
|
测试技术
1002 写出这个数 (20 分)
1002 写出这个数 (20 分)
102 0
|
8月前
1023 组个最小数 (20 分)
1023 组个最小数 (20 分)
|
C语言 C++
1023 组个最小数 (20 分)
给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意 0 不能做首位)。例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。 现给定数字,请编写程序输出能够组成的最小的数。
135 0
比较两个数的大小
因为 $$\log_25>\log_24=2>e^\frac{1}{2}$$ 所以 $$\log_52=\frac{1}{\log_25}
631 0
|
4月前
找出最大的数
【10月更文挑战第18天】找出最大的数。
36 6
|
C++
201312-4 有趣的数
201312-4 有趣的数
77 0
201312-4 有趣的数

热门文章

最新文章