讀入一個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。

漫步驚星發表於2018-01-05

讀入一個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。

輸入格式:每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於2^64

輸出格式:在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後一個拼音數字後沒有空格。

輸入樣例:
1234567890987654
輸出樣例:
ba si
NOTE:當數值超過2^63時一般使用char型別接收,unsigned long long 表示範圍 0 ~18446744073709551615
//
// Created by Zhxc on 2018.
//

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;

string table[] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };

//遞迴得到數字的每一位相加的和
unsigned long long fcn2(unsigned long long n){
	if (n < 10)
		return n;
	return (n % 10) + fcn2(n / 10);
}

//遞迴得到數字的每一位相加的和的拼音表示
string fcn3(unsigned long long n){
	if (n < 10)
		return table[n];
	return (n / 10 == 0) ? (fcn3(n / 10) + table[n % 10]) : (fcn3(n / 10) + " " + table[n % 10]);
}

int main(){
	unsigned long long n = 1234567890987654;

	cout << fcn2(n) << endl;
	cout << fcn3(fcn2(n)) << endl;

	system("pause");
	return 0;
}



相關文章