读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^100^。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
看到题目 想到是从高位往低位判断输出的 所以想到 % + 栈 + switch来实现
#include <bits/stdc++.h> using namespace std; char a[90000+10]; stack<int>ST; void solve(){ for (int i = 0;; ) { char c; c = getchar(); if (c == '\n') { a[i] = 0; break; } a[i++] = c; } int sum = 0; for(int i=0;i<strlen(a);i++){ sum+=a[i]-'0'; } while(sum){ ST.push(sum%10); sum/=10; } for(;ST.size();ST.pop()){ switch(ST.top()){ case 0:{cout<<"ling";break;}; case 1:{cout<<"yi";break;}; case 2:{cout<<"er";break;}; case 3:{cout<<"san";break;}; case 4:{cout<<"si";break;}; case 5:{cout<<"wu";break;}; case 6:{cout<<"liu";break;}; case 7:{cout<<"qi";break;}; case 8:{cout<<"ba";break;}; case 9:{cout<<"jiu";break;}; }if(ST.size()!=1) cout<<" "; } } int main(){ solve(); return 0; }