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);
    }
}
View Code

注:就是用了一个模板,然后直接模拟就可

 

posted @ 2021-08-15 10:35  bonel  阅读(39)  评论(0编辑  收藏  举报