| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38796 | 23级徐泽厚 | 【S】T1 | C++ | 运行超时 | 80 | 1000 MS | 8992 KB | 2601 | 2025-10-29 14:20:55 |
#include <bits/stdc++.h> #define int long long using namespace std; int x,k,m; vector<int> a; vector<int> as[100005]; int used[100005]; void sch(int n){ vector<int> jr; for (int i=1;i*i<=n;i++){ if (n%i==0){ jr.push_back(i); jr.push_back(n/i); if (i==(n/i)){ jr.pop_back(); } } } sort(jr.begin(),jr.end()); as[n]=jr; used[n]=1; return ; } vector<int> sch2(int n){ vector<int> jr; for (int i=1;i*i<=n;i++){ if (n%i==0){ jr.push_back(i); jr.push_back(n/i); if (i==(n/i)){ jr.pop_back(); } if (jr.size()>m) jr.pop_back(); if (jr.size()==m){ sort(jr.begin(),jr.end()); return jr; } } } sort(jr.begin(),jr.end()); return jr; } signed main(){ scanf("%lld%lld%lld",&x,&k,&m); if (k>=m){ printf("%lld\n",m); exit(0); } a.push_back(x); while (k--){ vector<int> nt; int lsize=0; for (int sss=0;sss<a.size();sss++){ int v=a[sss]; if (v<=100000){ if (used[v]){ for (int ind=0;ind<as[v].size();ind++){ nt.push_back(as[v][ind]); // lsize++; lsize=nt.size(); if (lsize==m) ind=as[v].size(); } if (lsize==m) sss=a.size(); } else{ sch(v); for (int ind=0;ind<as[v].size();ind++){ nt.push_back(as[v][ind]); // lsize++; lsize=nt.size(); if (lsize==m) ind=as[v].size(); } if (lsize==m) sss=a.size(); } } else{ vector<int> ls=sch2(v); for (int ind=0;ind<ls.size();ind++){ nt.push_back(ls[ind]); lsize=nt.size(); if (lsize==m) ind=ls.size(); } } } a=nt; } int sum=0; int lth; if (a.size()<m){ lth=a.size(); } else{ lth=m; } for (int i=0;i<lth;i++){ sum+=a[i]; // printf("%lld ",a[i]); } printf("%lld\n",sum); return 0; }