//PAT甲级1096-15.。。
//求连续因子序列
//思路不清晰的地方:一个因子:只能为1或者质数
#include<bits/stdc++.h>
#define DBG(n) cout << n<< endl;
using namespace std;
typedef long long ll;
vector<int> v[105], ans;
int maxn = -1;
int main(){
int n; cin >> n;
int cnt = 0, cnt2 = 0, now = 0;
for(int i = 2; i <= sqrt(n); i++){
if(n%i==0){
int cnt2=0;
while(n%i == 0 && i <= sqrt(n)){
v[cnt].push_back(i);
i++;
cnt2++;
}
if((int) v[cnt].size()>maxn){
//if(v[cnt].size() > maxn){无法更新——————坑点:花了我好长时间:v[cnt].size()返回的值是一个unsigned int, 这里初始maxn=-1,自动转换类型比较,-1~一个很大的数,因此无妨更新。————处理措施:强制转换int型;或者初始化maxn为0.
now = cnt; maxn = cnt2;
//DBG(cnt2); DBG(v[cnt].size());DBG(1000000);
}
i--;
cnt++;
}
}
//cout << now << "!!!" << endl;
sort(v[now].begin(), v[now].end());
if(v[now].size()){
cout << v[now].size()<< endl;
for(int i = 0; i < v[now].size(); i++){
if(!i) cout << v[now][i];
else cout <<"*" << v[now][i];
}}
else cout << "1" << endl;
return 0;
}
vector size()的一个坑点!
最新推荐文章于 2024-07-04 23:43:15 发布