SP11736 PTIME - Prime Time

传送门:SP11736 PTIME - Prime Time

额,这个题目跟我自己在某个团队出的题目类似,是我在某次数学课后想到的题目。我的想法是预处理所有 n\le n 的质数,然后每个质数处理一遍即可。

代码:

#include <iostream>
using namespace std;

int n;
const int N = 1e3 + 5;
bool not_prime[N];
long long prime[N];
int cur = 0;
long long ys[N], zs[N];

void Init()
{
	not_prime[1] = not_prime[0] = true;
	for (int i = 2; i <= n; i++)
	{
		if (!not_prime[i])
		{
			prime[++cur] = i;
			for (int j = i * i; j <= n; j += i)
			{
				not_prime[j] = true;
			} 
		}
	}
}

int main()
{
	cin >> n;
	Init();
	for (int i = 1; i <= cur; i++)
	{
		ys[i] = prime[i];
		long long cnt = 0;
		for (int j = prime[i]; j <= n; j *= prime[i])
		{
			cnt += n / j;
		}
		zs[i] = cnt;
	}
	for (int i = 1; i < cur; i++)
	{
		cout << ys[i] << "^" << zs[i] << " * ";
	}
	cout << ys[cur] << "^" << zs[cur] << endl;
	return 0;
}
posted @ 2022-01-13 15:45  HappyBobb  阅读(10)  评论(0)    收藏  举报  来源