題目描述
合數是指自然數中除了能被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 得到。具體做法 設定三個指標,初始他們都指向第乙個醜數 ...