0
点赞
收藏
分享

微信扫一扫

天梯赛 L2-029 特立独行的幸福 (25 分)

40dba2f2a596 2022-04-19 阅读 45
c++

天梯赛 L2-029 特立独行的幸福 (25 分)

代码

```cpp
#include <iostream>
#include <algorithm>
#include <map>
#include <vector>

using namespace std;

const int N = 1e5 + 5;

int l, r;
bool st[N];

int pfh(int k) {
	int sum = 0;
	while (k) {
		sum += (k % 10) * (k % 10);
		k /= 10;
	}
	return sum;
}

int isprime(int x) {
	if (x == 1 || x == 2) return 0;
	for (int i = 2; i <= x / i; i++)
		if (x % i == 0)
			return 1;
	return 2;
}

int main() {
	cin >> l >> r;
	map<int, int> mp;
	int flag = 0;

	for (int i = l; i <= r; i++) {
		int t = i, sum  = i;
		vector<int> ve;
		while (t != -1) {
			sum = pfh(sum);
			t = sum;
			if (find(ve.begin(), ve.end(), sum) != ve.end())
				break;
			ve.push_back(sum);
			st[t] = true;
		}
		if (t == 1)  mp[i] = ve.size();
	}
	for (auto& m : mp)
		if (!st[m.first] && ++flag)
			cout << m.first << ' ' << isprime(m.first) * m.second << endl;
	if (!flag) puts("SAD");

	return 0;
}

参考链接

1
2
dfs

举报

相关推荐

0 条评论