PAT乙级1002 写出这个数 (20 分)
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT乙级1002 写出这个数 (20 分)相关的知识,希望对你有一定的参考价值。
https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384
朴素写法: 25ms
#include<cstdio>
#include<iostream>
using namespace std;
int main(void)
{
char a[10000];
int b[1005]={0};
long int sum=0;
cin>>a;
int i=0;
while(a[i]!='\\0')
{
sum=sum+a[i]-'0';
i++;
}
i=0;
if(sum==0)
{
printf("ling\\n");
return 0;
}
while(sum)
{
b[i]=sum%10;
sum=sum/10;
i++;
}
for(i=i-1;i>=0;i--)
{
switch(b[i])
{
case 1:
printf("yi");
break;
case 2:
printf("er");
break;
case 3:
printf("san");
break;
case 4:
printf("si");
break;
case 5:
printf("wu");
break;
case 6:
printf("liu");
break;
case 7:
printf("qi");
break;
case 8:
printf("ba");
break;
case 9:
printf("jiu");
break;
default:
printf("ling");
}
if(i!=0)
printf(" ");
}
printf("\\n");
return 0;
}
精简写法: 20ms
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
string str[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
string ans[100];
int main(void)
{
string s; cin>>s;
int sum=0;
for(int i=0;i<s.size();i++) sum+=s[i]-'0';
int k=0;
while(sum)
{
ans[k++]=str[sum%10];
sum=sum/10;
}
for(int i=k-1;i>=0;i--)
{
cout<<ans[i];
if(i!=0) cout<<" ";
}
return 0;
}
注意: 最后的空格不要输出
以上是关于PAT乙级1002 写出这个数 (20 分)的主要内容,如果未能解决你的问题,请参考以下文章