This commit is contained in:
HuangHai
2025-08-30 18:35:01 +08:00
commit 1f397eca87
6258 changed files with 1487241 additions and 0 deletions

44
TangDou/51NOD/1928.cpp Normal file
View File

@@ -0,0 +1,44 @@
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
vector<PII> g;
// 判断一个数是不是质数
bool isPrime(int n) {
if (n < 2) return false;
for (int i = 2; i <= n / i; i++)
if (n % i == 0) return false;
return true;
}
int main() {
int k;
cin >> k;
int a = 1;
while (k--) {
int p, m;
cin >> p >> m;
a *= pow(p, m);
}
a--;
int last = -1;
for (int i = 2; i * i <= a; i++) { // 遍历所有小因子
if (a % i > 0 || !isPrime(i)) continue; // 不是因子 或者 不是质数
// 如果数字a除以这个质数因子i,商a/i也是一个质数因子,它是最后一个最大的质数因子,只能有1个
if (isPrime(a / i) && a / i > i) last = a / i;
int x = a;
int cnt = 0;
while (x % i == 0) {
cnt++;
x /= i;
}
if (cnt > 0) g.push_back({i, cnt});
}
if (~last) g.push_back({last, 1});
for (int i = g.size() - 1; i >= 0; i--)
cout << g[i].first << " " << g[i].second << endl;
return 0;
}