目录

​1,题目描述​

​2, 思路​

​3,代码​


1,题目描述

PAT_甲级_1005 Spell It Right (20分) (C++)_#include

Sample Input:

12345

 

Sample Output:

one five

将输入的一个数字的各位求和,并将结果的各位用英文输出;(输入的数N<10^100,范围较大)

 

2, 思路

由于输入的数较大,故将其作为字符串处理;

用int型的sum存储各位的累加和,并将其转换为string型的output;

将output各位与字符0相减,得出对应的英文,并输出;

 

3,代码

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
using namespace std;

int main(){
//#ifdef ONLINE_JUDGE
//#else
// freopen("1.txt", "r", stdin);
//#endif

string digits[10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

string input;//输入的数已超出int的表示范围 故直接采用string
int sum = 0;
cin>>input;

for(int i = 0; i < input.length(); i++){
sum += input[i] - '0';
}

string output = to_string(sum);//部分编译器可能无法通过 但在PAT上可以提交

cout<<digits[output[0] - '0'];

for(int i = 1 ; i < output.length(); i++){
cout<<' '<<digits[output[i] - '0'];
}


return 0;
}