SP11736 PTIME - Prime Time
传送门:SP11736 PTIME - Prime Time
额,这个题目跟我自己在某个团队出的题目类似,是我在某次数学课后想到的题目。我的想法是预处理所有 的质数,然后每个质数处理一遍即可。
代码:
#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;
}

浙公网安备 33010602011771号