題目來源html
讀入一個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。java
每一個測試輸入包含 1 個測試用例,即給出天然數 n 的值。這裏保證 n 小於 $10^{100}$ios
在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後一個拼音數字後沒有空格。測試
1234567890987654321123456789
yi san wu
由於數字的範圍是小於$10^{100}$,因此要用string接收輸入,將string中的每一位數字累加到sum裏,用 to_string(sum) 將sum轉化成字符串nums,而後逐一輸出nums對應的拼音spa
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 int main() 6 { 7 string str; 8 string output[10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" }; 9 int sum = 0; 10 11 cin >> str; 12 int length = str.length(); 13 14 for (int i = 0; i < length; ++i) 15 { 16 sum = sum + str[i] - '0'; 17 } 18 19 string nums = to_string(sum); 20 21 for (int i = 0; i < nums.length(); ++i) 22 { 23 if (i != 0) 24 { 25 cout << " "; 26 } 27 cout << output[nums[i] - '0']; 28 } 29 30 return 0; 31 }
利用棧後進先出(FILO)的特色code
一樣用string接收輸入,將string中的每一位數字累加到sum裏,接着將sum的每一位數字保存到棧中,而後進行出棧的操做,輸出對應的拼音htm
假定sum = 135,那麼入棧的順序就是(棧底)5 3 1(棧頂),出棧的順序就是1 3 5blog
1 #include <iostream> 2 #include <string> 3 #include <stack> 4 using namespace std; 5 6 int main() 7 { 8 string str; 9 string output[10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" }; 10 stack<int> v; 11 int sum = 0; 12 13 cin >> str; 14 int length = str.length(); 15 16 for (int i = 0; i < length; ++i) 17 { 18 sum = sum + str[i] - '0'; 19 } 20 //135 21 while (sum != 0) 22 { 23 v.push(sum % 10); 24 sum /= 10; 25 } 26 cout << output[v.top()]; 27 v.pop(); 28 while (!v.empty()) 29 { 30 cout << " " << output[v.top()]; 31 v.pop(); 32 } 33 return 0; 34 }
1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner input = new Scanner(System.in); 6 String str = input.nextLine(); 7 int num = 0; 8 for (int i = 0; i < str.length(); i++) { 9 num += str.charAt(i) - '0'; 10 } 11 String s = String.valueOf(num); 12 String[] output = {"ling","yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"}; 13 for (int i = 0; i < s.length(); i++) { 14 num = s.charAt(i) - '0'; 15 if (i != 0) 16 System.out.print(" "); 17 System.out.print(output[num]); 18 } 19 } 20 }