AtCoder Beginner Contest 170 D. Not Divisible

AtCoder Beginner Contest 170 D. Not Divisible

题目链接
AtCoder Beginner Contest 170 D. Not Divisible_第1张图片
寥寥数字,我看了半天都没看懂
后来发现是日译音的问题,真的是无力吐槽
题意就是找数组中的一个数 a i a_i ai,数组中除了它本身就没有能被它整除的数,可能有人搞不明白整除与被整除的关系,我再讲通俗一点就是数组中除了数本身就没有该数的因子了~
弄清楚题意就很简单了,我们只要对每个数遍历找因子即可,有一个坑点就是 1 1 1,当只有一个 1 1 1 时,答案是就为 1 1 1~
AC代码如下:

#include
using namespace std;
typedef long long ll;
main(){
    int n;
    cin>>n;
    int a[n],cnt=0;
    map<int,int>m;
    for(int i=0;i<n;i++){
        cin>>a[i],m[a[i]]++;
    }
    for(int i=0;i<n;i++){
        int flag=1;
        if(a[i]==1 && m[1]==1) {cnt++;continue;}
        for(int j=1;j<=sqrt(a[i]);j++){
            if(a[i]%j==0){
                if(m[j]) {flag=0;break;}
                if(a[i]/j!=a[i]&&m[a[i]/j]) {flag=0;break;}
                if(a[i]/j==a[i]&&m[a[i]/j]>1) {flag=0;break;}
            }
        }
        if(flag) cnt++;
    }
    cout<<cnt;
}

你可能感兴趣的:(数论,AtCoder)