题目:

最大整数

亲密数对

题目解析

看注释

代码

#include <bits/stdc++.h>
using namespace std;

bool cmp(string a, string b) {
	return a + b > b + a;
} // 求出串联最优解 

int main() {
	freopen("bignum.in", "r", stdin);
	freopen("bignum.out", "w", stdout);
	int n;
	cin >> n;
	vector<string> nums(n); // 所有数字 
	for (int i = 0; i < n; i++) {
		cin >> nums[i];
	}
	sort(nums.begin(), nums.end(), cmp); // 排序 
	string res;
	for (auto s : nums) {
		res += s;
	} //Eazy 
	cout << res << endl;
	return 0;
}
//Code written by Li Zexuan (Looks handsome)
#include<bits/stdc++.h>
using namespace std;

int GetFactorSum(int n) {
	int i, sum = 0;
	for (i = 2; i <= n / i; i++) {
		if (n % i == 0) {
			if (i == 1 || i == n / i) {
				sum += i;
			} else {
				sum += i + n / i;
			}
		}
	}
	return sum;
} // 求所有因数之和(除去本身) 

int main() {
	freopen("number.in", "r", stdin);
	freopen("number.out", "w", stdout);
	int arr[2][10], cnt = -1;
	int n;
	int i, num;
	cin >> n;
	for (i = 2; i <= n; i++) {
		num = GetFactorSum(i);
		if (GetFactorSum(num) == i && (num + i) <= (n * 2)) { //如果为亲密数对 
			++cnt;
			arr[0][cnt] = i, arr[1][cnt] = num;
		}
	} // 输出所有亲密数对 
	for (int i = 0; i <= cnt; i++) {
		if (i != cnt) {
			cout << arr[0][i] << ' ' << arr[1][i] << endl;
		} else {
			cout << arr[0][i] << ' ' << arr[1][i];
		}
	}
	return 0;
}