2021.08.14(牛客七夕比赛)
1.D-亲密数_牛客2021年七夕节比赛 (nowcoder.com)
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cmath> #include<vector> using namespace std; vector<int> get_divisors(int x) { vector<int> res; for (int i = 1; i <= x / i; ++i) if (x % i == 0) { res.push_back(i); if (i != x / i) res.push_back(x / i); } sort(res.begin(), res.end()); return res; } int main(){ int a,b; scanf("%d %d",&a,&b); int flag=0; int f1=0,f2=0; for(int i=a;i<=b;i++){ vector<int> res=get_divisors(i); int sum=0; while(!res.empty()){ int num=res[0]; sum+=num; res.erase(res.begin()); } sum-=i; if(sum>=a&&sum<=b){ int sum2=0; res=get_divisors(sum); while(!res.empty()){ int num=res[0]; sum2+=num; res.erase(res.begin()); } sum2-=sum; if(sum2==i&&i!=sum){ f1=i; f2=sum; flag=1; break; } } } if(flag==0){ printf("-1\n"); }else{ printf("%d %d\n",f1,f2); } }
注:就是用了一个模板,然后直接模拟就可