PAT 1002. 写出这个数
1002. 写出这个数 (20)
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1空格,但一行中最后一个拼音数字后没有空格。
输入样例:1234567890987654321123456789输出样例:
yi san wu
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 #include<vector> 3 #include<stack> 4 using namespace std; 5 int main(){ 6 int i,sum=0,flag=0; char ch; 7 string map[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; 8 vector<int> vi; 9 stack<int> s; 10 while((ch=getchar())!='\n'){ 11 i=ch-'0'; 12 vi.push_back(i); 13 } 14 for(auto o:vi) 15 sum+=o; 16 while(1){ 17 i=sum%10; 18 sum/=10; 19 s.push(i); 20 if(sum==0) 21 break; 22 } 23 while(!s.empty()){ 24 i=s.top(); 25 s.pop(); 26 if(flag++==0) 27 cout<<map[i]; 28 else 29 cout<<" "<<map[i]; 30 } 31 return 0; 32 }