PAT乙题1005. 继续(3n+1)猜想 (25)

2018/01/25 PAT 共 735 字,约 3 分钟
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<map>
#include<string>
#include<fstream>
#include<vector>
#include<functional>
using namespace std;
int main() {
#ifdef LOCAL
	freopen("d:\\datain.txt", "r", stdin);
	freopen("d:\\dataout.txt", "w", stdout);
#endif LOCAL
	int n;
	cin >> n;
	vector<int> v(n);
	int b;
	int arr[10000];
	fill(arr, arr + 10000, 0);
	for (int i = 0; i < n; i++) {
		cin >> b;
		v[i] = b;
		while (b != 1) {
			if (b % 2 != 0)
				b = b * 3 + 1;

			b = b / 2;
			arr[b] = 1;
		}
	}
	sort(v.begin(), v.end(), greater<int>());
	bool flag = false;
	for (int i = 0; i < v.size(); i++) {
		if (arr[v[i]] == 0) {
			if (flag==true) {
				cout << " ";
			}
			cout << v[i];
			flag = true;
		}
	}
	return 0;
}

Search

    Table of Contents