牛牛的k合因子數

2021-10-02 17:05:26 字數 1237 閱讀 5000

題目描述

合數是指自然數中除了能被1和本身整除外,還能被其他數(0除外)整除的數。

牛牛最近在研究「k合因子數」,所謂「k合數」是指乙個數的所有因子中,是合數的因子共有k個。

例如20的因子有1,2,4,5,10,20,其中4,10,20為合數,它有3個合數因子,就稱20是乙個 「3合因子數」

牛牛想要知道1~n中給定k的情況下k合因子數的數目。

輸入描述:

第一行輸入兩個數字n,m(1≤n,m≤10 5)表示範圍以及查詢「k」的數目

接下來m行,每行乙個正整數k(1≤k≤n)查詢k合因子數的數目。

輸出描述:

一行乙個數字,表示k合因子數的數目

示例1

輸入

10 512

345輸出

4100

0

說明

1~10的範圍內

1合因子數有:4,6,9,10,共4個

2合因子數有:8,共1乙個

思路:一定要b[arr[i]]++,否者要超時

**:

#include

using

namespace std;

typedef

long

long ll;

const ll maxn=

1e5+5;

ll n,m;

ll prime[maxn]

;ll arr[maxn]

;ll b[maxn]

;void

eratos()

prime[0]

=prime[1]

=false

;for

(ll i=

2;i*i<=

1e5+

1;i++)}

}return;}

intmain()

if(j*j!=i&&prime[i/j]==0

&&i/j!=

1&&i/j!=2)

}}b[arr[i]]++

;}for(ll i =

0; i < m; i++

)return0;

}

牛牛的k合因子數

合數是指自然數中除了能被1和本身整除外,還能被其他數 0除外 整除的數。牛牛最近在研究 k合因子數 所謂 k合數 是指乙個數的所有因子中,是合數的因子共有k個。例如20的因子有1,2,4,5,10,20,其中4,10,20為合數,它有3個合數因子,就稱20是乙個 3合因子數 牛牛想要知道1 n中給定...

牛客 3004 H 牛牛的k合因子數

合數是指自然數中除了能被1和本身整除外,還能被其他數 0除外 整除的數。牛牛最近在研究 k合因子數 所謂 k合數 是指乙個數的所有因子中,是合數的因子共有k個。例如20的因子有1,2,4,5,10,20,其中4,10,20為合數,它有3個合數因子,就稱20是乙個 3合因子數 牛牛想要知道1 n中給定...

醜數(因子只有 2 3 5 的數)

理解題意關鍵 如果說乙個數的因子只有 2 3 5 那麼反過來想,這個數一定是由若干個 2 3 5 相乘得到的,所以每一次只需要找出當前所有已知醜數中由2 3 5 相乘可以得到的最小的數即可。也就是說每乙個醜數,都可以由之前的醜數乘 2 3 5 得到。具體做法 設定三個指標,初始他們都指向第乙個醜數 ...