| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38811 | 23级徐泽厚 | 【S】T1 | C++ | 通过 | 100 | 102 MS | 360 KB | 1327 | 2025-10-29 15:50:17 |
#include <bits/stdc++.h> #define int long long using namespace std; int x,k,m; vector<int> a; int yjg=0; void pre(){ for (int i=1;i*i<=x;i++){ if (x%i!=0) continue; a.push_back(i); a.push_back(x/i); if (i==x/i){ a.pop_back(); } } sort(a.begin(),a.end()); // for (int i=0;i<a.size();i++){ // mp[a[i]]=i; // } // vector<int> sss; // sss.push_back(1); // p.push_back(sss); // for (int i=0;i<a.size();i++){ // int u=a[i]; // if (u==1){ // continue; // } // vector<int> ls; // for (int j=0;j<i;j++){ // if (a[i]%a[j]==0){ // ls.push_back(a[j]); // } // } // p.push_back(ls); // } return ; } void dfs(int cs,int nm){ if (m<=0){ return ; } if (cs==0 or nm==1){ m--; yjg+=nm; return ; } for (auto t:a){ if (m<=0 or nm<t){ break; } if (nm%t==0){ dfs(cs-1,t); } } } signed main(){ scanf("%lld%lld%lld",&x,&k,&m); if (k>=m){ cout<<m<<"\n"; return 0; } pre(); dfs(k,x); cout<<yjg<<"\n"; return 0; }