数学题-各位数相加
1. 原文
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1
| 1234567890987654321123456789
|
输出样例:
2. 解析思路
n的可能取值超过了int,long long的表示范围,故采用字符串 ch[110]
取出字符串的每一位相加得一个总数num
取出num的每一位。用do/while防止遗漏0。%10取到的是个位。
ans数组中存储的数是从个数开始的倒置数
从后往前输出对应数
3. AC代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #include<cstdio> char match[][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; char ch[110]; int ans[110]; int main(){
scanf("%s",ch); int num=0; for(int i=0;ch[i]!=0;i++){ num+=ch[i]-'0'; } int cnt=0; do{ ans[cnt++]=num%10; num/=10;
}while(num); for(int i=cnt-1;i>=0;i--){ printf("%s",match[ans[i]]); if(i>0){ printf(" "); }else{ printf("\n"); }
} return 0; }
|