码迷,mamicode.com
首页 > 其他好文 > 详细

[PAT Basic] 1002.写出这个数

时间:2019-08-15 21:27:40      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:题目   操作   自然数   ott   ase   范围   span   输入格式   汉语   

1002 写出这个数 (20 分)

题目来源

 

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

输入格式:

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

输出格式:

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

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

分析:

因为数字的范围是小于$10^{100}$,所以要用string接收输入,将string中的每一位数字累加到sum里,用 to_string(sum) 将sum转化成字符串nums,然后逐一输出nums对应的拼音

 

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     string str;
 8     string output[10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
 9     int sum = 0;
10 
11     cin >> str;
12     int length = str.length();
13 
14     for (int i = 0; i < length; ++i)
15     {
16         sum = sum + str[i] - 0;
17     }
18     
19     string nums = to_string(sum);
20 
21     for (int i = 0; i < nums.length(); ++i)
22     {
23         if (i != 0)
24         {
25             cout << " ";
26         }
27         cout << output[nums[i] - 0];
28     }
29 
30     return 0;
31 }

 

 

另解:

利用栈后进先出(FILO)的特点

同样用string接收输入,将string中的每一位数字累加到sum里,接着将sum的每一位数字保存到栈中,然后进行出栈的操作,输出对应的拼音

假定sum = 135,那么入栈的顺序就是(栈底)5 3 1(栈顶),出栈的顺序就是1 3 5

 

 1 #include <iostream>
 2 #include <string>
 3 #include <stack>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     string str;
 9     string output[10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
10     stack<int> v;
11     int sum = 0;
12 
13     cin >> str;
14     int length = str.length();
15 
16     for (int i = 0; i < length; ++i)
17     {
18         sum = sum + str[i] - 0;
19     }
20     //135
21     while (sum != 0)
22     {
23         v.push(sum % 10);
24         sum /= 10;
25     }    
26     cout << output[v.top()];
27     v.pop();
28     while (!v.empty())
29     {
30         cout << " " << output[v.top()];
31         v.pop();
32     }
33     return 0;
34 }

 

 

[PAT Basic] 1002.写出这个数

标签:题目   操作   自然数   ott   ase   范围   span   输入格式   汉语   

原文地址:https://www.cnblogs.com/47Pineapple/p/11360400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!