问题标题: 酷町堂:数字黑洞123

0
0
已解决
邹正洋
邹正洋
中级守护
中级守护

题目链接: 酷町堂:1506

1506   数字黑洞123

经验值:1200 时间限制:1000毫秒 内存限制:128MB

题目描述 Description

数学中的123就跟英语中的ABC一样平凡和简单,但往往越简单的东西却蕴含着无限的能量,就像黑洞一样,可以吞噬一切。123的能力如下:取任意一个数字的各个位数,统计各个位数中偶数的个数、奇数的个数以及该数的总位数,用所得的这三个数按照偶数个数、奇数个数、总位数的顺序依次组成一个新数,如1234567891,偶数的个数为4,奇数的个数6,总位数为10,得到的新数为4610,再统计该新数的各个位数中偶数的个数、奇数的个数及总位数,再得到一个新数,如此进行下去,最终必然会落入数字黑洞123中。每一个数经过这样的操作得到123的过程是不相同的,请聪明的你计算一下任意一个正整数n(n的总位数不超过18位)通过以上过程到达数字黑洞需要进过几步?
如:输入:1234567891,经过的步骤为:
1234567891->4610->314->123,总共经过了3步,则输出3

输入描述 Input Description

输入为一行,为一个总长度不超过18位的正整数n。

输出描述 Output Description

输出为一行,为数字n经过以上步骤进入数字黑洞需要经过的操作步数。

样例输入 Sample Input

1234567891

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

如果输入的是1,则下一步为11.

 

Wrong Answer:80分

代码:

long long a[30],n,cnt,x,y,f,g;

int main(){

    cin>>n;

    while(n!=123){

        x=n;

        int i=1;

        while(x){

            a[i]=x%10;

            x/=10;

            if(a[i]%2==0) y++;

            else f++; g++; i++;

        }

        if(g>=10) n=y*1000+f*100+g;

        else n=y*100+f*10+g;

        y=f=g=0;

        cnt++;

    }

    cout<<cnt;

 

急急急!

求各位大佬找错!


0
我要回答