标签:
宝宝不开心了。自从回家开始百练就上不去POJ也上不去,今天突然HDU也上不去了,PAT25分的题目都快更新完了。我就按顺序往下面更新了。回学校之后题目质量能高出不少= =。
问题描述:
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:
在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
代码如下:
1 #include <cstdio> 2 #include <cstring> 3 int main() 4 { 5 char a[10005]; 6 char num[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; 7 gets(a); 8 int ans=0; 9 for(int i=0;i<strlen(a);i++){ 10 ans+=a[i]-‘0‘; 11 } 12 char out[10005]; 13 int j=0; 14 while(ans){ 15 out[j++]=ans%10; 16 ans/=10; 17 } 18 for(int i=j-1;i>=0;i--){ 19 printf("%s",num[out[i]]); 20 if(i!=0){ 21 printf(" "); 22 }else{ 23 printf("\n"); 24 } 25 } 26 27 return 0; 28 }
思路解析:
本题还算挺简单的。但是最后一个循环如果写成int i=strlen(out)-1;i>=0;i++ 的话第二个测试点就不过,答案就算部分通过。= =想了半天也没想明白。但是机智的我改成int i=j-1;i>=0;i++ 结果抱着试试看的心理= =结果居然AC了。还是有待研究滴。
标签:
原文地址:http://www.cnblogs.com/xzt6/p/5785283.html