1002 写出这个数 (20 分)
1002 写出这个数 (20 分)
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
不知道是不是我理解错了,题目中已经说明n 小于 10100,为啥还要给个测试用例为1234567890987654321123456789。
不管三七二十一,直接用字符串处理。建立int→string的映射。输入输出处理,数字的入栈顺序为低位→高位,出栈顺序为高位→低位。
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 5 int main() 6 { 7 string str; 8 stack<int>ans; 9 map<int,string> a; 10 a[0]="ling"; 11 a[1]="yi"; 12 a[2]="er"; 13 a[3]="san"; 14 a[4]="si"; 15 a[5]="wu"; 16 a[6]="liu"; 17 a[7]="qi"; 18 a[8]="ba"; 19 a[9]="jiu"; 20 int sum=0; 21 cin>>str; 22 for(int i=0;i<str.length();i++) 23 sum+=str[i]-'0'; 24 if(sum==0) //注意边界问题 25 ans.push(0); 26 while(sum) 27 { 28 ans.push(sum%10); 29 sum/=10; 30 } 31 while(!ans.empty()) 32 { 33 cout<<a[ans.top()]; 34 ans.pop(); 35 if(!ans.empty()) 36 cout<<" "; 37 } 38 cout<<endl; 39 return 0; 40 }