題目鏈結
題目描述
無奈之下痛定思痛,ne決定也帶上自己的10的九次方個小夥伴去gankff。 ff提前得知了這個訊息,這可把ff急壞了.那可是10的九次方個人啊! 這時ff的小夥伴en說:「ff莫慌,我這裡有3盞bd哥的神燈,上面分別有乙個素數,可以讓編號被上面的數字整除的人昏睡過去,這樣就可以大大削減ne的人數!」(ff所帶的10的九次方個人分別被編號為1~10的九次方) ff:「好!」。ff如同找到了救命稻草。但是由於只能削減一部分人數,ff需要召集的人數應該大於等於ne剩下的人數,但是時間緊急,ff算不出來了,你能告訴ff至少要準備多少人嗎?
輸入描述:
第一行包含乙個正整數t(t<200)之後的t行每行包含3個正整數,a,b,c(2<=a,b,c<10^6;
a!=b,b!=c,c!=a;
保證a,b,c為素數)分別代表3盞神燈上的數字。
輸出描述:
輸出t行
每行乙個整數,表示ff至少要準備的人數。
示例1輸入
32 3 5
5 7 11
13 2 3
輸出266666666
623376624
307692308`
題意:
乙個數10的九次方,讓我們輸入一行數t並在10的九次方的方位內找出不能整除t個數的數有多少個;
解題思路:
根據容斥定理的推論就可以得出:(注 :|a| 意思代表a集合中元素的個數)
|aubuc|=| a | + | b | + | c | - | a ∩ b | - |a ∩ c| - | b ∩ c | + | a ∩ b ∩ c |;
做題目步驟:
1.時間複雜度考慮
時間少於o(10^9),但列舉會超時。
2.分析題目
目標:1-10^9中,不能被a,b,c 整除的最少個數
容斥原理不會。太菜了
分解問題:
分而治之,或者反其道而行之。
這題我們先反著思考。
將問題變成:1-10^9 能a,b,c被整除的最多的個數。
在集合10^9方裡,除去被a,b,c整除的數。
分析:
1.細節 a!=b,b!=c,c!=a;並且都大於2
3.選擇演算法,或者解決問題的知識點。
通過分析,在已經學習的知識裡,馬上就可以想到容斥原理。
4.考慮優化,陣列大小,資料型別
ll總結提公升:
1.對於容斥原理使用掌握的不夠:
2.需要擴充套件知識面。
關於 容斥原理知識:
1.簡單的排列問題
2.方程整數解問題
3.求指定區間內與n互素的數的個數:
4.求在給定區間內,能被給定集合至少乙個數整除的數個數
5.能滿足一定數目匹配的字串的個數問題
6.路徑的數目問題
7.錯排問題
推薦部落格:記錄
# include
# include
# include
using
namespace std;
typedef
long
long ll;
const ll maxn=
1e9;
intmain()
return0;
}
Cheerleaders(容斥定理)
題意 在乙個m行n列的矩陣裡站k個拉拉隊員,問有多少種方法,四周邊界必須有乙個隊員.這裡用到組合數加容斥定理,將重複的刪除,第一行,最後一行,第一列,最後一列.用到位運算來模擬16種情況.這裡要吐槽一下,中英文輸入法,和case中c的大小寫,wrong了無數次,最後才發現,蛋疼.include in...
Snake Rana (容斥定理)
snake rana gym 101350g 題目大意 給定乙個矩陣,和矩陣中的一些點,求矩陣中不包含這些點的子矩陣的數量 容斥原理 並集 總情況 兩個集合相交的情況情況 三個集合相交的情況 四個集合相交的情況 五個集合相交的情況 依次類推 include include using namespa...
容斥定理專題
介紹 co prime hdu 4135 用位運算生成所有可能 include include using namespace std typedef long long ll const int n 1e3 5 ll a,b,n int num ll fac n void factor if tn...