1005 继续(3n+1)猜想(25 分)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
int num[120], temp[120], k;
bool f[1000000];
int main()
{
    scanf("%d", &k);
    for (int i = 0; i < k; i++)
    {
        scanf("%d", &num[i]);
        temp[i] = num[i];
    }
    for (int i = 0; i < k; i++)
    {
        while (num[i] != 1)
        {
            if (num[i] % 2 == 0)num[i] /= 2;
            else num[i] = (3 * num[i] + 1) / 2;
            f[num[i]] = true;
        }
    }
    vector<int>ans;
    for (int i = 0; i < k; i++)
    {
        if (f[temp[i]] == false)ans.push_back(temp[i]);
    }
    sort(ans.begin(), ans.end(), greater<int>());
    for (int i = 0; i < ans.size(); i++)
    {
        printf("%d", ans[i]);
        if (i != ans.size() - 1)printf(" ");
    }
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容