今天不知道怎么了 做题做的好烦躁啊
注意这个234不成立之后 要从3开始再找 我原来的写法漏了345 456 直接跳到了5开始继续找
错误的就不贴了(看的心烦
本来还想着用队列来存一下,不成立后让第一个元素出队,类似贪心的写法,可惜忘了怎么实现了,干脆借鉴别人的思路吧,要简明的多
ac版
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#define long long int;
using namespace std;
signed main(){
int n;
cin>>n;
vector<int>temp,ans;
for(int i=2;i<n/i;i++){
if(n%i==0){//找到能被整除的第一个位置
for(int m=n,j=i;m%j==0;j++){ //将m置于i 之后每次更新m的值
m/=j;
temp.push_back(j);
}
if(temp.size()>ans.size())
ans.swap(temp);
}
temp.clear();
// cout<<"ans"<<endl;
// for(int i=0;i<ans.size();i++){
// cout<<ans[i]<<' ';
// }
// cout<<endl;
}
if(!ans.size()){
cout<<1<<endl;
cout<<n<<endl;
}
else{
cout<<ans.size()<<endl;
for(int i=0;i<ans.size();i++) {
cout<<ans[i];
if(i!=ans.size()-1) cout<<"*";
}
}
return 0;
}