AcWing 890 能被整除的數

2021-10-01 21:42:59 字數 802 閱讀 2796

題目描述:

給定乙個整數n和m個不同的質數p1,p2,…,pm。

請你求出1~n中能被p1,p2,…,pm中的至少乙個數整除的整數有多少個。

輸入格式

第一行包含整數n和m。第二行包含m個質數。

輸出格式

輸出乙個整數,表示滿足條件的整數的個數。

資料範圍

1≤m≤16,

1≤n,pi≤10^9

輸入樣例:

10 2

2 3

輸出樣例:

7
分析:

本題考察容斥原理。即

從m個質數中選數使用了在狀態壓縮中常用的位運算操作,1到2^m - 1對應了所有數的選擇情況,對應位為1表示選中了,對應位為0表示未選中。比如m = 5,數21 = 10101表示選中了第1,3,5個質數。用此方式確定選中的質數及其乘積,當被選中的質數個數是奇數時,我們就加上1到n中能被這些數乘積整除的數的個數;是偶數時就減去能被這些數整除數的個數。

#include using namespace std;

typedef long long ll;

int p[20];

int main()

t *= p[j];

s++;}}

if(t != -1)

}cout<

return 0;

}

AcWing 890 能被整除的數(容斥原理)

給定乙個整數n和m個不同的質數p1,p2,pm。請你求出1 n中能被p1,p2,pm中的至少乙個數整除的整數有多少個。輸入格式 第一行包含整數n和m。第二行包含m個質數。輸出格式 輸出乙個整數,表示滿足條件的整數的個數。資料範圍 1 m 16 1 n,pi 1e9 輸入樣例 10 2 2 3輸出樣例...

能被某些數整除的數的特徵

性質1 如果數a b都能被c整除,那麼它們的和 a b 或差 a b 也能被c整除。性質2 幾個數相乘,如果其中有乙個因數能被某乙個數整除,那麼它們的積也能被這個數整除。能被2整除的數,個位上的數能被2整除 偶數都能被2整除 那麼這個數能被2整除 能被3整除的數,各個數字上的數字和能被3整除,那麼這...

能被某些數整除的數的特徵

性質1 如果數a b都能被c整除,那麼它們的和 a b 或差 a b 也能被c整除。性質2 幾個數相乘,如果其中有乙個因數能被某乙個數整除,那麼它們的積也能被這個數整除。能被2整除的數,個位上的數能被2整除 偶數都能被2整除 那麼這個數能被2整除 能被3整除的數,各個數字上的數字和能被3整除,那麼這...