Divisors

题目描述

给定m 个不同的正整数a1,a2,.... am,请对0 到m 每一个k 计算,在区间[1, n] 里有多少正整数

是a 中恰好k 个数的约数。

 

输入

第一行包含两个正整数n,m,分别表示区间范围以及a 数组的大小。

第二行包含m 个不同的正整数a1,a2,.... am,表示a 数组。

 

输出

输出m + 1 行,每行一个整数,其中第i 行输出k = i 的答案。

 

样例输入

10 3
4 6 7

样例输出

4
4
1
1

数据范围

 m<=200,n<=10^9,ai<=10^9

题目有点绕,分析一下:

4 : 1 2 4

6: 1 2 3 6

7: 1 7

在1到10中,只有1是a中3个数的约数,2是a中2个数的约数,3,4,6,7分别是a中一个数的约数

具体分析

首先容易判断是数论中求公约数的问题。

我们可以先将每个数的约数求出来,然后难点在于统计

由于是128MB,且n<=10^9,ai<=10^9,若开bool不现实。

所以我们可以定义:

ans[i]表示在区间内,恰好是a中i个数的约数 的个数

然后我们统计就行了

用sort

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值