1. 程式人生 > >PAT-ADVANCED1005——Spell It Right

PAT-ADVANCED1005——Spell It Right

題目描述:

題目翻譯:

1005 正確拼寫它

給定一個非負整數N,你的任務是計算N中各位數字的和,且以英文輸出和的每一位數字。

輸入格式:

每個輸入檔案包含一個測試用例。每個測試用例獨佔一行,包含一個數N(<= 10 ^ 100)。

輸出格式:

對每個測試用例,在一行中以英文輸出和的每一位數字。兩個相鄰單詞之間用一個空格分隔,行末不得有多餘空格。

輸入樣例:

12345

輸出樣例:

one five

知識點:字串

思路:用字元陣列的形式讀取輸入

注意對0做特殊處理,否則無法通過測試點2。

時間複雜度和空間複雜度均是O(n),其中n是輸入資料的長度。

C++程式碼:

#include<iostream>
#include<cstring>
#include<vector>

using namespace std;

int main(){
	char numEnglish[10][6] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
	char input[101];
	scanf("%s", input);
	int sum = 0;
	for(int i = 0; i < strlen(input); i++){
		sum += input[i] - '0';
	}
	vector<int> result;
	if(sum == 0){
		printf("zero\n");
		return 0;
	}
	while(sum > 0){
		result.push_back(sum % 10);
		sum /= 10;
	}
	for(int i = result.size() - 1; i >= 0; i--){
		printf("%s", numEnglish[result[i]]);
		if(i != 0){
			printf(" ");
		}else{
			printf("\n");
		}
	}
	return 0;
}
 

C++解題報告: