社区讨论
服了!
灌水区参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @luz7jvx8
- 此快照首次捕获于
- 2024/04/14 15:31 2 年前
- 此快照最后确认于
- 2024/04/14 16:56 2 年前
CPP
#include <bits/stdc++.h>
using namespace std;
#define in long long
/*bool isPrime(in n) {
if(n == 1) {
return false;
}
if(n == 2 || n == 3 || n == 5 || n == 7) {
return true;
}
if(n % 2 == 0 || n % 3 == 0 || n % 5 == 0 || n % 7 == 0) {
return false;
}
return true;
}
*/
bool isPrime(int x) {
if( x == 1){
return false;
}
if (x == 2 || x == 3 || x == 5 || x == 7) { //将两个小数额外处理
return true;
}
if (x % 6 != 1 && x % 6 != 5) { //余数不是1和5的一定不是质数
return false;
}
//余数是1和5的数也不一定是质数
//还是要跑循环,但这次我们是 i+=6 ,不再是单纯无脑的i++了
//这也是速度提升的关键
//如果一个数不能整除比它小的任何质数,那么这个数就是质数
int tmp = sqrt(x);
for (int i = 5; i <= tmp; i += 6) {
//i可以表示为6a+5,i+2可以表示为6b+1
if (x % i == 0 || x % (i + 2) == 0) {
return false;
}
}
//排除所有剩余的是质数数
return true;
}
in n,k=1,ans,l;
signed main() {
ios::sync_with_stdio(false);
cin>>n;
long long int a[(in)n/2+1] = {0};
a[0] = 0;
if(isPrime(n) == true) {
cout<<n<<endl;
return 0;
}
l = n;
for(in j=1; j<=l; j++) {
for(in i=2; i<=n; i++) {
if(isPrime(i) == false && i + 1 <= n) {
i++;
} else if(isPrime(i) == true && n % i == 0 && isPrime(n) == false) {
a[k]=i;
k++;
n/=i;
}
}
if(isPrime(n) != false){
break;
}
}
a[k] = n;
for(in j=1; j<=l; j++) {
if(n % 5 == 0){
a[k]=5;
k++;
n/=5;
if(isPrime(n) != false){
a[k] = n;
break;
}
}
}
sort(a+1,a+k+1);
for(in i=1; i<=k; i++) {
if(a[i]!=1 && (a[i]!=a[i-1]) && (a[i]!=a[i+1]) && i + 1 <= k && a[i] != 0) {
cout<<a[i]<<" * ";
} else if(a[i]!=1 && a[i] == a[i+1] && i + 1 <= k && a[i] != 0) {
for(in j=i; j<=k; j++) {
if(a[i]!=a[j]) {
break;
} else {
ans++;
}
}
if(i + ans - 1 < k) {
i+=ans-1;
} else {
cout<<a[i]<<"^"<<ans;
return 0;
}
cout<<a[i]<<"^"<<ans<<" * ";
ans=0;
} else if(a[i]!=1 && (a[i]!=a[i-1]) && (a[i]!=a[i+1]) && i + 1 >= k && a[i] != 0) {
cout<<a[i]<<endl;
return 0;
} else if(a[i]!=1 && a[i] == a[i+1] && i + 1 >= k && a[i] != 0) {
for(in j=i; j<=k; j++) {
if(a[i]!=a[j]) {
break;
} else {
ans++;
}
}
cout<<a[i]<<"^"<<ans<<endl;
return 0;
}
}
return 0;
}
B3871这题错在哪啊!!!
回复
共 2 条回复,欢迎继续交流。
正在加载回复...