PAT-1002
1002. 写出这个数 (20)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
//考虑用字符串存数处理 否则肯定表达不了大整数
1 /* 2 https://www.patest.cn/contests/pat-b-practise/1002 3 author:LY 2016.5.24 4 */ 5 #include<iostream> 6 #include<string> 7 using namespace std; 8 9 int main() 10 { 11 string a; 12 cin>>a; 13 int sum=0; 14 15 //对a分解求和 16 for(int i=0;i<a.size();i++) 17 { 18 sum+=int(a[i]-'0'); 19 } 20 21 int k[100],j=0; 22 23 //将sum的值转换为汉字输出 24 25 while((sum/10)!=0) 26 { 27 k[j]=sum%10; //低位 28 sum=sum/10; //降低位数 29 j++; 30 } 31 k[j]=sum; 32 33 for(int i=j;i>=0;i--) 34 { 35 switch(k[i]) 36 { 37 case 0: printf("%s","ling"); 38 break; 39 case 1:printf("%s","yi"); 40 break; 41 case 2:printf("%s","er"); 42 break; 43 case 3:printf("%s","san"); 44 break; 45 case 4:printf("%s","si"); 46 break; 47 case 5:printf("%s","wu"); 48 break; 49 case 6:printf("%s","liu"); 50 break; 51 case 7:printf("%s","qi"); 52 break; 53 case 8:printf("%s","ba"); 54 break; 55 case 9:printf("%s","jiu"); 56 break; 57 } 58 if(i!=0) 59 printf("%s"," "); 60 } 61 printf("\n"); 62 return 0; 63 } 64