问题标题: 酷町堂:酷町堂1506 数字黑洞123怎么做?(20)

1
0
已解决
李牧之
李牧之
新手光能
新手光能
#include<iostream>
#include<cstring>
using namespace std;
char a[20];
int main(){
    int ans=0,js=0,os=0,zs=0;
    gets(a);
    while (a[0]!='1'||a[1]!='2'||a[2]!='3'){
        js=0; os=0; zs=0;
        for(int i=0;i<strlen(a);i++){
            if ((a[i]-'0')%2==0) os++;
            else js++;
        }
        zs=js+os;
        cout<<(char(js))+(char(os))+(char(zs));
    }
    cout<<ans<<endl;
    return 0;
}

怎么做?大佬教我!

http://judge.codingtang.com/problem/1506/


1
已采纳
黄俊博
黄俊博
资深光能
资深光能
    while(n需要不等于123才能执行)
    {
        n2=n;
        while(n2!=0)
        {
            if(n2%10%2==0)
                偶数累加器自增
            else
                奇数累加器自增
            n2/=10;//每次把末尾去掉
        }
        z=ou+ji;
        if(ji>=10 && z>=10)
        {
            count++;
            n=(ou*100+ji)*100+z;
        }
        else
        if(z>=10 && ji<10)
        {
            count++;
            n=(ou*10+ji)*100+z;
        }
        else
        if(z<10 && ji<10)
        {
            count++;
            n=(ou*10+ji)*10+z;  
        }
       最后把每个变量 清零。
    }
0
0
王梓澳
王梓澳
中级光能
中级光能

核心代码: 

    he=n;
    while(n!=123)
    {
        he=n;
        while(he>0)
        {
            a[i]=he%10;
            he/=10;
            i++;
        }
        for(int j=0;j<=i-1;j++)
        {
            if(a[j]%2==0) os++;
            else js++;
        }
        n=os*100+js*10+i;
        memset(a,0,sizeof(a));
        i=0;
        js=0;
        os=0;he=0;
        k++;
    }

 

0
张国鉴
张国鉴
资深守护
资深守护
 while(n!=123){
        int j=0,o=0,he=0;
        //统计数里面奇偶数的个数,为j和o
        he=j+o;//统计这个数的奇数和偶数和
        if (j<10&&he<10) n=(o*100+j*10)+he;
        else if (j<10&&he>=10) n=(o*1000+j*100)+he;
        else if (j>10) n=(o*10000+j*1000+he);
        count++;
    }
    cout<<count;

核心部分

我要回答