Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
30441 | masppy | 【S】T1 | C++ | 通过 | 100 | 115 MS | 324 KB | 710 | 2024-07-19 15:32:57 |
#include<bits/stdc++.h> #define ll long long using namespace std; const int maxn=1e6+10; ll n,m,t,k,cnt[maxn],tot=0,root,ans; ll rnd[maxn],siz[maxn],value[maxn],num[maxn]; priority_queue<ll> q; inline void dfs(ll n,ll m){ if(n==1||m==0){ ans+=n; t++; return; } for(int i=1;i<=tot;i++){ if(num[i]>n) break; if(n%num[i]!=0) continue; dfs(num[i],m-1); if(t>=k) return; } } int main(){ scanf("%lld%lld%lld",&n,&m,&k); if(m>k){ printf("%d",k); return 0; } for(ll i=1;i*i<=n;i++){ if(n%i!=0) continue; // cout<<i<<endl; num[++tot]=i; if(i*i!=n) num[++tot]=n/i; } sort(num+1,num+1+tot); dfs(n,m); printf("%lld",ans); return 0; }