WA #2#6#9,70分,不明白为啥会WA
查看原帖
WA #2#6#9,70分,不明白为啥会WA
1341426
qwert100楼主2024/4/17 08:22
#include<iostream>
#include<algorithm>

using namespace std;

typedef pair<int, int>PII;

#define int long long

const int N = 1e12 + 10, M = 1e6 + 10;

int n;
PII primes[M];
int cnt;
bool st[M];

void get_primes()
{
	if (n == 1)
	{
		primes[cnt++] = { n,1 };
		return;
	}
	for (int i = 2; i <= n / i; i++)
	{
		if (!st[i] && n % i == 0)
		{
			primes[cnt++] = { i,0 };
			while (n % i == 0)
			{
				primes[cnt - 1].second++;
				n /= i;
			}
			for (int j = 0; primes[j].first * i <= n; j++)
			{
				st[primes[j].first * i] = true;
				if (i % primes[j].first == 0)break;
			}
		}

	}
	if (n > 1)primes[cnt++] = { n,1 };
}

signed main()
{
	cin>>n;
	get_primes();
	for (int i = 0; i < cnt; i++)
	{
		if (primes[i].second > 1)cout << primes[i].first << '^' << primes[i].second;
		else if (primes[i].second == 1)cout<<primes[i].first;
		if (cnt == 2 && i == 0)cout<<" * ";
		if (cnt != 2 && i != cnt - 1)cout << " * ";
	}
	return 0;
}
2024/4/17 08:22
加载中...