Each input file contains one test case. Each case occupies one line which contains an N (<= 10100).
For each test case, output in one line the digits of the sum in English words. There must be one space between two consecutive words, but no extra space at the end of a line.
12345
one five
#include<stdio.h> int main() { int i = 0, sum = 0, a[100]; char str[10015], pinyin[10][6] = { "zero","one","two","three","four","five","six","seven","eight","nine" }; scanf("%s", str); while (str[i]) { sum += str[i] - '0'; i++; } i = 0; while (sum > 0) { a[i] = sum % 10; sum /= 10; i++; } for (int j = i - 1;j > 0;j--) { printf("%s ", pinyin[a[j]]); } printf("%s", pinyin[a[0]]); return 0; }
package go.jacob.day826; import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String s=sc.nextLine(); int sum=0; for(int i=0;i<s.length();i++){ sum+=s.charAt(i)-'0'; } String res=sum+""; StringBuilder sb=new StringBuilder(); for(int i=0;i<res.length();i++){ switch (res.charAt(i)) { case '0': sb.append("zero "); break; case '1': sb.append("one "); break; case '2': sb.append("two "); break; case '3': sb.append("three "); break; case '4': sb.append("four "); break; case '5': sb.append("five "); break; case '6': sb.append("six "); break; case '7': sb.append("seven "); break; case '8': sb.append("eight "); break; default: sb.append("nine "); break; } } System.out.println(sb.toString().substring(0,sb.length()-1)); } }
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
string digToEng[10] = {"zero","one","two","three","four","five","six","seven","eight","nine"};
int main()
{
string input;
cin>>input;
int sum = 0;
int result[1000];
for(int i=0;i<input.size();i++)
{
int digit = input[i]-48;
sum+=digit;
}
int i=0;
if(sum==0)
{
cout<<"zero"<<endl;
return 0;
}
while(sum>0)
{
int current = sum%10;
sum = sum/10;
result[i] = current;
i++;
}
for(int j=i-1;j>=0;j--)
{
cout<<digToEng[result[j]];
if(j!=0)
cout<<" ";
}
cout<<endl;
return 0;
}
#include<iostream> #include<vector> #include<string> using namespace std; int main() { string s,digit[10]={"zero","one","two","three","four","five","six","seven","eight","nine"}; cin>>s; int i,j,t,total=0; for(i=0;i<s.size();i++) total+=s[i]-48; vector<string> num; while(1) { num.push_back(digit[total%10]); if(total%10==total) break; total/=10; } for(i=num.size()-1;i>=0;--i) { cout<<num[i]; if(i>0) cout<<' '; } return 0; }
import java.math.BigInteger; import java.util.Scanner; //思路很简单,使用biginteger处理数据,之后转换成string再一个个字符输出就行。 //先设定一个字符数组,就可以不用冗长的switch-case了。 public class Main { public static void main(String[] args) { String c[]={"zero","one","two","three","four","five","six","seven","eight","nine","ten"}; Scanner in=new Scanner(System.in); String s=in.nextLine(); BigInteger sum=new BigInteger("0"); for(int i=0;i<s.length();i++){ sum=sum.add(new BigInteger(String.valueOf(s.charAt(i)))); } s=sum.toString(); for(int i=0;i<s.length();i++){ if(i!=0){ System.out.print(" "); } System.out.print(c[(int)(s.charAt(i)-'0')]); } } }
#include <iostream> #include <stack> #include <string> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; stack<string> num; int main(int argc, char** argv) { string str; long long sum = 0.0; cin >> str; for(int i = 0;i < str.length();i++){ sum += str[i] - '0'; } while(sum > 0){ switch(sum % 10){ case 0: num.push("zero");break; case 1: num.push("one");break; case 2: num.push("two");break; case 3: num.push("three");break; case 4: num.push("four");break; case 5: num.push("five");break; case 6: num.push("six");break; case 7: num.push("seven");break; case 8: num.push("eight");break; case 9: num.push("nine");break; } sum /= 10; } string s; s = num.top(); num.pop(); cout << s; while(!num.empty()){ cout << " "; s = num.top(); num.pop(); cout << s; } cout << endl; return 0; }
#include<iostream> using namespace std; string s[15]={"zero","one","two","three","four","five","six","seven","eight","nine","ten"}; int main(){ string str; cin>>str; int n=str.size(),sum=0; for(int i=0;i<n;i++){ sum+=str[i]-'0'; } string answer=to_string(sum); int m=answer.size(); for(int i=0;i<m;i++){ cout<<s[answer[i]-'0']; if(i<m-1) cout<<" "; } return 0; }
#include <iostream> #include <sstream> #include <string> #include <cstdio> #include <vector> #include <map> #include <algorithm> using namespace std; int main() { string input; getline(cin, input); int sum = 0; for(int i = 0; i < input.size(); i++) { sum += input[i] - '0'; } string sums = to_string(sum); map<char, string> names = { {'1', "one"}, {'2', "two"}, {'3', "three"}, {'4', "four"}, {'5', "five"}, {'6', "six"}, {'7', "seven"}, {'8', "eight"}, {'9', "nine"}, {'0', "zero"} }; for(int i = 0; i < sums.size(); i++) { cout << names[sums[i]]; if (i < sums.size() - 1) { cout << " "; } } return 0; }
#include<iostream> #include<vector> #include<string.h> #include<map> using namespace std; void spellitinenglish() { string hanyu[] = { "zero" , "one","two","three","four","five" ,"six" ,"seven","eight","nine" }; //string hanyu[] = { "ling" , "yi","er","san","si","wu" ,"liu" ,"qi","ba","jiu" }; string n; int sum = 0; cin >> n; if (n == "0") { sum = 0; } for (int i = 0; i < n.size(); i++) { sum += n[i] - '0'; } vector<int>q; if (sum == 0) { q.push_back(0); } while (sum != 0) { q.insert(q.begin(), sum % 10); sum /= 10; } auto it = q.begin(); for (; it != q.end(); it++) { cout << hanyu[*it]; if (it != q.end() - 1) { cout << " "; } } }int main() { spellitinenglish(); return 0; }
n = input() lst = [] for i in n: lst.append(int(i)) suma = 0 for i in lst: suma = suma + i out = str(suma) outlst = [] for i in out: if i == '0': outlst.append("zero") if i == '1': outlst.append("one") if i == '2': outlst.append("two") if i == '3': outlst.append("three") if i == '4': outlst.append("four") if i == '5': outlst.append("five") if i == '6': outlst.append("six") if i == '7': outlst.append("seven") if i == '8': outlst.append("eight") if i == '9': outlst.append("nine") print(' '.join(outlst))
#include <iostream> #include <vector> #include <string> using namespace std; int main() { string N; cin >> N; vector<string> digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; int sum = 0; for (int i = 0; i < N.size(); i++) { sum += (int)(N[i] - '0'); } if (sum == 0) { cout << digits[0] << endl; } vector<string> res; while (sum > 0) { res.push_back(digits[sum % 10]); sum = sum / 10; } cout << res.back(); for (int i = res.size() - 2; i >= 0; i--) { cout << " " << res[i]; } cout << endl; return 0; }
// 题目的意思是就是把一个数子的所有的数加起来的值是多少?? // 具体不再多说。简单做了一个数字的映射关系。 #include <iostream> #include <map> #include <string> #include <sstream> /* run this program using the console pauser or add your own get*/ using namespace std; string numEnglish[] = {"zero","one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; int String2Int(char A) { int a; stringstream ss; ss << A; ss >> a; return a; } string Int2String(int A) { string a; stringstream ss; ss << A; ss >> a; return a; } int main(int argc, char** argv) { string N; cin >> N; int nNumber=0; for(int i=0; i<N.size(); i++) { nNumber+=String2Int(N[i]); } N = Int2String(nNumber); for(int i=0; i<N.size(); i++) { cout << numEnglish[String2Int(N[i])]; if(i == N.size() - 1) { } else { cout << " "; } } cout << endl; return 0; }
#include <sstream> #include <string> #include <iostream> using namespace std; string code[10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; int main(){ int n=0; string s, str; cin >> s; for(unsigned int i=0;i<s.size();i++){ n += (s[i] - '0'); } stringstream ss; ss << n; ss >> str; cout << code[str[0]-'0']; for(unsigned int i=1;i<str.size();i++){ cout << " " << code[str[i]-'0']; } cout << endl; return 0; }
import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args){ Scanner in = new Scanner(System.in); String input = in.nextLine(); char[] arr = input.toCharArray(); Integer sum = 0; for(int i=0;i<arr.length;i++){ sum = sum + (int)(arr[i]-'0'); } String s = sum.toString(); String[] numbers = new String[10]; numbers[0] = "zero"; numbers[1] = "one"; numbers[2] = "two"; numbers[3] = "three"; numbers[4] = "four"; numbers[5] = "five"; numbers[6] = "six"; numbers[7] = "seven"; numbers[8] = "eight"; numbers[9] = "nine"; for(int i=0;i<s.length()-1;i++){ System.out.print(numbers[(int)(s.charAt(i)-'0')]+" "); } System.out.print(numbers[(int)(s.charAt(s.length()-1)-'0')]); } }
#include <stdio.h> #include <string.h> char buf[10][10] = {"zero","one","two","three","four","five","six","seven","eight","nine"}; char str[110]; char tmp[110]; int main() { int n,ans,i,t; int j,len; while(~scanf("%s",str)) { j = 0; ans = 0; len = strlen(str); for(i=0;i<len;i++) { ans += (str[i] - '0'); } if(ans == 0) //注意处理0的情况 { printf("%s\n","zero"); continue; } while(ans != 0) //把每一位依次存下来 { tmp[j++] = ans%10; ans /= 10; } for(i=j-1;i>=0;i--) { t = tmp[i]; printf("%s",buf[t]); if(i != 0) { printf(" "); } } printf("\n"); } return 0; }
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{
//输入
string inputnumber;
cin >> inputnumber;
stack<int> SumStack;
int temp;
for (int i = 0; i < inputnumber.length(); i++)
{
temp = inputnumber[i]-'0';
SumStack.push(temp);
}
//求和
int sum = 0;
while (!SumStack.empty())
{
sum += SumStack.top();
SumStack.pop();
}
stack<int> stacks;
int number = sum;
//拆分和
while (1)
{
stacks.push(number % 10);
number = number / 10;
if (number == 0) break;
}
//读
while (!stacks.empty())
{
switch (stacks.top())
{
case 0:cout << "zero"; break;
case 1:cout << "one"; break;
case 2:cout << "two"; break;
case 3:cout << "three"; break;
case 4:cout << "four"; break;
case 5:cout << "five"; break;
case 6:cout << "six"; break;
case 7:cout << "seven"; break;
case 8:cout << "eight"; break;
case 9:cout << "nine"; break;
default:
break;
}
stacks.pop();
if (stacks.size()!=0)
{
cout << " ";
}
}
return 0;
}