问题标题: 酷町堂:1147

0
0
宋梓涵
宋梓涵
新手光能
新手光能
#include<iostream>
using namespace std;
long long s[100001],n;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        if(n!=0)
        {

        }
    }
    if(n==0)
        cout<<"0";
    return 0;
}

中间不知道该怎么写了?求大佬们!!!


0
0
0
张帆
张帆
中级天翼
中级天翼

你用字符串方便一点,

可以从字符串末尾遍历到字符串头

然后里面判断就行了

0
被禁言 李秉轩
李秉轩
修练者
修练者

他来了,他来了,他带着完整代码走来了

/*
#include<iostream>
#include<string>
using namespace std;
string s;
string dw[7]={"shiwan","wan","qian","bai","shi",""};
int main(){
    cin>>s;
    int n=s.length();
    for(int i=0,j=6-n;i<n;i++,j++){
        if(s[i]!='0'){
            cout<<s[i]<<dw[j];
        }else{
            if(n==1 ||i+1<n&&s[i+1]!='0'){
                cout<<0;
            }
        }
    }
    return 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
江齐悦
江齐悦
高级光能
高级光能

核心(其他的自己写):

if(n == 0) cout<<0;

else if(n == 100000) cout<<"1shiwan";

else{

while(n){

i++;

a[i] = n%10;

n /= 10;

}

for(i = i;i >= 1;i--){

if(a[i] != 0){

if(flag == true){

cout<<0;

flag=false;

}

cout << a[i] << ch[i];

}

else flag = true;

}

}

0
0
潘晨皓
潘晨皓
高级天翼
高级天翼

潘晨皓在2020-03-10 12:05:17追加了内容

@陆麟瑞 快来

我要回答