AtCoder-Not Divisible

题目:Not Divisible
分析:把一个数的倍数都设置为1(表示该数不能为false),以为这样会超时,但还是可以AC的
#include <iostream>
#include<cstring>
#include<vector>
#include<stdio.h>
#include<queue>
#include<math.h>
#include<stack>
#include<algorithm>
#include<map>
#include<set>
#include<iostream>
using namespace std;
#define MAX 99999999
typedef long long ll;
int n,m,k;
const int mmax = 1e6;
int visi[mmax];
int main()
{
    
    
    cin>>n;
    int a[n + 1];
    for(int i = 0 ; i < n ; i++) 
        cin>>a[i];   
    sort(a,a+n);
    int cnt = 0;
    for(int i = 0 ; i < n ; i++)
    {
    
    
        if(visi[a[i]] == 0)
        {
    
    
            if(a[i]!=a[i+1])
                cnt++;
            for(int j = 1;j*a[i]<=mmax;j++)
                visi[j*a[i]] = 1;
        }
    }
    cout<<cnt;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43567222/article/details/114482513