社区讨论
TLE求调
B3871[GESP202309 五级] 因数分解参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mje3lehq
- 此快照首次捕获于
- 2025/12/20 17:30 3 个月前
- 此快照最后确认于
- 2025/12/22 20:05 3 个月前
硬着模拟加了个特判就过一个点(捂脸)
CPP#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
#define int long long
bool check(int x) {
if (x < 2) return false;
if (x == 2) return true;
for (int i = 2; i * i <= x; i++)
if (x % i == 0) return false;
return true;
}
signed main() {
int n; cin >> n;
string result = ""; int cnt = 0;
if (check(n)) {
cout << n << endl;
return 0;
}
for (int i = n; i >= 2; i--) if (check(i) && n % i == 0) {
string tmp;
vector<int> primes;
while (n % i == 0 && n != 1) {
primes.push_back(i);
n /= i;
}
if (primes.size() == 1) {
tmp = to_string(primes[0]);
reverse(tmp.begin(), tmp.end());
} else {
string power = to_string(primes.size()); reverse(power.begin(), power.end());
string base = to_string(primes[0]); reverse(base.begin(), base.end());
tmp += (power + "^" + base);
}
if (cnt != 0) result += " * ";
result += tmp;
cnt++;
}
if (cnt != 1) reverse(result.begin(), result.end());
cout << result;
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...