zoukankan      html  css  js  c++  java
  • 【Wannafly挑战赛9-A】找一找

    链接:https://www.nowcoder.net/acm/contest/71/A

    题目描述

    给定n个正整数,请找出其中有多少个数x满足:在这n个数中存在数y=kx,其中k为大于1的整数

    输入描述:

    第一行输入一个n
    接下来一行输入n个正整数ai

    输出描述:

    输出符合条件个数
    示例1

    输入

    5
    1 2 3 4 5

    输出

    2

    说明

    5个数中1和2符合条件,1是后面每个数的因子,2是4的因子

    备注:

    1≤n,a≤1000000

     

    普通做法是遍历每个数,复杂度O(n^2)。。所以呢,可以用标记数组,出现过的计数++,这种方法可以快速判断是否存在某个数。

    代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N = 1e6+3;
     4 int a[N];
     5 int main()
     6 {
     7     int n, i, m, j, sum = 0;
     8     cin>>n;
     9     for(i = 1; i <= n; i++)
    10     {
    11         scanf("%d", &m);
    12         a[m]++;
    13     }
    14     for(i = 1; i <= n; i++)
    15     {
    16         if(a[i] > 0)
    17         {
    18             for(j = 2; i*j <N; j++)
    19             {
    20                 if(a[i*j] > 0)
    21                 {
    22                     sum += a[i];
    23                     break;
    24                 }
    25             }
    26         }
    27     }
    28     printf("%d
    ", sum);
    29     return 0;
    30 }
    View Code
  • 相关阅读:
    11-Mybatis中使用PageHelper分页插件
    10-Mybatis使用注解开发
    Windows快捷键
    环境搭建
    计算机基础
    oracle语句
    oracle
    测试质量和类型
    测试基础
    项目部署和总结
  • 原文地址:https://www.cnblogs.com/lesroad/p/8432810.html
Copyright © 2011-2022 走看看