PAT-ADVANCED1005——Spell It Right
阿新 • • 發佈:2018-12-20
題目描述:
題目翻譯:
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++解題報告: