问题标题: 酷町堂:http://judge.codingtang.com/problem/1147/

0
0
已解决
傅文彬
傅文彬
新手天翼
新手天翼
#include<bits/stdc++.h>
using namespace std;
string a,hz[5]={"wan","qian","bai","shi",""};
int l,f;
int main()
{
    cin>>a;
    l=a.size();
    if(a=="0")cout<<0;
    if(a=="100000")cout<<"1shiwan";
    for(int i=0;i<l;i++)
    {
        if(a[i]!='0')
        {
            if(f==1)
            {
                cout<<0;
                f=0;
            }
            cout<<a[i]<<hz[5-l+i];  
        }
        else f=1;   
    }   
}

为什么95分?


0
0
0
江齐悦
江齐悦
高级光能
高级光能
大写数字变换的几种情况:

1.给每一位加后缀。

2.如果中间有0,那么不加后缀。

3.如果末尾有0,那么不输出0。

4.中间有多个连续的0,那么只输出1个0。

5.0输出0。

解题思路:

1.遍历字符串s。

2.如果当前的s[i]是0,那么用flag标识出现过的0。

3.如果当前的s[i]是非0的,那么先根据flag判断是否要输出0,再处理当前数字。

核心(定义和框架自己写):

for(int i=0;i<?;i++){

if(s[i]=='?')

flag=?;

else{

if(?){

cout<<"0";

flag=false;

}

cout<<s[i]<<post[?];

}

}

0
我要回答