D. Number into Sequence

网友投稿 756 2022-09-04

D. Number into Sequence

D. Number into Sequence

// Problem: D. Number into Sequence// Contest: Codeforces - Codeforces Round #686 (Div. 3)// URL: Memory Limit: 256 MB// Time Limit: 3000 ms// 2022-02-22 16:55:51// // Powered by CP Editor (namespace std;#define rep(i,l,r) for(int i=(l);i<=(r);i++)#define per(i,l,r) for(int i=(l);i>=(r);i--)#define ll long long#define pii pair#define mset(s,t) memset(s,t,sizeof(t))#define mcpy(s,t) memcpy(s,t,sizeof(t))#define fi first#define se second#define pb push_back#define all(x) (x).begin(),(x).end()#define SZ(x) ((int)(x).size())#define mp make_pairconst ll mod = 1e9 + 7;inline int read () { int x = 0, f = 0; char ch = getchar(); while (!isdigit(ch)) f |= (ch=='-'),ch= getchar(); while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar(); return f?-x:x;}template void print(T x) { if (x < 0) putchar('-'), x = -x; if (x >= 10) print(x/10); putchar(x % 10 + '0');}bool check (ll tar) { if (tar < 2) return 0; for (int i = 2; i <= tar / i; i ++) if (tar % i == 0) return 0; return 1;}vector ans, ans2;void solve() { ans.clear(); ans2.clear(); ll n; cin >> n; if (check(n)) { cout << 1 << endl; cout << n << endl; } else { ll tn = n; for (int i = 2; i <= n/ i; i ++) if (n % i == 0) { while (n % i == 0) { ans.pb(i); n /= i; } } if (n > 1) ans.pb(n); map c; for (auto t : ans) c[t] ++; ll temp = 1; int id = -1; int cnt = 0; for (int i = 0; i < ans.size() - 1; i ++) if (ans[i + 1] % ans[i] == 0) { if (c[ans[i]] > cnt) { cnt = c[ans[i]]; id = i; } } if (id == -1) { cout << 1 << endl; cout << tn << endl; return; } // for (auto t : ans) cout << t << " "; // puts(""); for (int i = id; i < ans.size() - 1; i ++) { if (ans[i + 1] % ans[i] == 0) { ans2.pb(ans[i]); if (i == ans.size() - 2) { temp *= ans[i]; ans2.pb(tn / temp); break; } } else { ans2.pb(tn / temp); break; } temp *= ans[i]; } cout << ans2.size() << endl; for (auto t : ans2) cout << t << " "; puts(""); }}int main () { int t; t =1; cin >> t; while (t --) solve(); return 0;}

优先选择一个出现次数最多的因子,作为开头。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:凡泰极客荣获2021 InfoQ“最佳技术产品营销奖”
下一篇:Qt优秀开源项目之一:流媒体直播系统Open Broadcaster Software
相关文章

 发表评论

暂时没有评论,来抢沙发吧~