题解 | 继续xxx定律

继续xxx定律

https://www.nowcoder.com/practice/9cc1055241c547269f58fa8b009e335d

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int n;
    while(cin >> n)
    {
        if(n == 0) return 0;
        vector<int> a(n);
        for(int i = 0; i < n; i++) cin >> a[i];
        vector<int> core(1001);
        for(int i = 0; i < n; i++)
        {
            int x = a[i];
            if(core[x] != - 1)
            {
                if(x <= 1000) core[x] = 1;
                while(x != 1)
                {
                    if(x % 2 == 1)
                    {
                        x = (3 * x + 1) / 2;
                        if(x <= 1000) core[x] = -1;
                    }
                    else 
                    {
                        x = x / 2;
                        if(x <= 1000) core[x] = -1;
                    }
                }
            }
        }
        for(int i = n - 1; i >= 0; i--)
        {
            if(core[a[i]] == 1) cout << a[i] << " ";
        }                
    }
    return 0;
}

全部评论

相关推荐

02-07 10:52
复旦大学 Java
混子不想混:非常能理解,感觉他们就靠着入行早,打压新人一样。我这个公司也是,天天干的累死累活,然后绩效打C,合着让新人被绩效,像是年底攒棺材本一样。总是打击之后,还会让人开始自我怀疑,是不是我努力的还不够,实际上并不是,就是他们不做人,故意打压新人。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务