1002. 写出这个数 (20)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:1234567890987654321123456789输出样例:
yi san wu
思路是先用string保存输入的数字,在卓个转化为int相加,然后int转化为string,在循环里用get_chinese方法获得每个char对应的汉语拼音。
#include<iostream>
#include<string>
#include <sstream>
using namespace std;
string get_chinese(char x)//获得对应拼音
{
string s2="";
switch(x)
{
case '1':s2="yi";break;
case '2':s2="er";break;
case '3':s2="san";break;
case '4':s2 ="si";break;
case '5':s2="wu";break;
case '6':s2="liu";break;
case '7':s2="qi";break;
case '8':s2="ba";break;
case '9':s2="jiu";break;
case '0':s2="ling";break;
}
return s2;
}
int main()
{
string s1 = "";
cin>>s1;
int s = s1.size(),s3=0;
int temp = 0;
for(size_t i=0;i < s;i++)
{
s3= s1[i]-'0';
temp=temp+s3;
//cout<<"s3="<<s1[i]<<" "<<temp<<endl;
}//求和
string s2 ="";
stringstream strStream;
strStream<<temp;
s2 = strStream.str();
int s2_length = s2.size();
for(size_t i = 0;i <s2_length;i++)
{
if(i!=s2_length-1)
cout<<get_chinese(s2[i])<<" ";
else
cout<<get_chinese(s2[i]);
}
return 0;
}
时间 | 结果 | 得分 | 题目 | 语言 | 用时(ms) | 内存(kB) | 用户 |
---|---|---|---|---|---|---|---|
9月22日 16:20 | 答案正确 | 20 | 1002 | C++ (g++ 4.7.2) | 1 | 364 | loseryao |
测试点
测试点 | 结果 | 用时(ms) | 内存(kB) | 得分/满分 |
---|---|---|---|---|
0 | 答案正确 | 1 | 364 | 12/12 |
1 | 答案正确 | 1 | 352 | 1/1 |
2 | 答案正确 | 1 | 348 | 1/1 |
3 | 答案正确 | 1 | 348 | 2/2 |
4 | 答案正确 | 1 | 256 | 2/2 |
5 | 答案正确 | 1 | 256 | 2/2 |