問題描述題意:給定一段區間 a-b 乙個數n 求在a-b區間內與n互質數的個數給定數字n,要求您計算a和b之間的整數(與n相對質數)。相對於n而言,如果
兩個整數除1以外沒有共同的正除數,則稱這兩個整數為互質或相對質數。同樣,如果它們的最大公約數為1,則數字1對每個整數都是質數。
輸入值
輸入的第一行包含t(0輸出量
對於每個測試用例,請列印a到b之間(包括n在內)的整數數目。請遵循以下輸出格式。
樣本輸入
21 10 2
3 15 5
樣本輸出
案例1:5
案例2:10
暗示
在第乙個測試用例中,相對於2質數為[1,10]的五個整數為。
互質性質很容易聯想到尤拉定理,但是區間範圍大,不宜遍歷
我們採用的方式是:先求出數n的質因數,n的質因數的倍數顯然不與n互質。
故我們只需要求出在區間a-b中與n不互質的數的數量x 最後b-a-x 就是我們要求的a-b區間內互質的數。其中,a-b中與n不互質的數可先求出 1-b的不互質數再求出1-(a-1)的不互質數相減得到。
#include
#include
#include
#include
#include
const
int n =
10010
;typedef
long
long ll;
using
namespace std;
ll p[n]
,k;void
get(ll n)
//得出n的質因數的個數}if
(n>
1) p[k++
]=n;
}ll no
(ll m)
for(
int i=
1;i) sum+
=m/que[i]
;return sum;
}int
main()
return0;
}
hdoj4336(容斥原理or概率DP)
題目大意 n種卡牌,每種卡牌被抽到的概率依次為p1,p2,pn,抽一次最多抽到一張,最少0張。問抽滿n種卡的次數的期望。用容斥原理來做,先單獨考慮,再減去重複的。比如有兩種卡牌a,b,分別為p1,p2,抽到a牌的期望為1 p1,抽到b牌的期望為1 p2,然而抽a牌時會有對b牌的重複,抽b牌亦然。根據...
容斥原理 數論
兩個集合的容斥關係公式 a b a b a b a b 重合的部分 三個集合的容斥關係公式 a b c a b c a b b c c a a b c 最後可以推廣到n個集合,集合裡的元素為奇數則加,偶數減 hdu 4135 很簡單,直接求出所有的質因子,然後容斥解決 author crystal ...
容斥原理,反演
大概知道為什麼自己水平比較渣啦。一開始只會反演,然後被容斥驚豔到。然後寫了一段時間容斥,反演忘光光。所以融會貫通真的很難。多校的三道題,當時是用反演做的。事實上以前就知道容斥跟莫比烏斯函式值的關係,然後熟練掌握 然後一段時間沒用就忘了哈。簡單來說就是,求乙個數和乙個集合中的數互質的個數,把集合中乙個...