今天看了有關容斥原理的幾篇部落格。
容斥原理的基本思想是:先不考慮重疊的情況,把所有物件的數目求出,然後再把計數時重複計算的數目排斥出去,使得計算的結果既無遺漏又無重複。
首先是乙個經典的互素問題[hdoj 4135 co-prime]
題目大意是:給定a,b,n,求區間[a,b]中與n互素的數的個數。
思路是:先將n的所有素因子求出,然後求區間[1,a]中與n具有公因子的數的個數,然後用[1,b]減去[1,a-1]。
**如下:
#include
#include
#include
#include
#include//佇列
#include//棧
#include
#include
using namespace std;
long long p[100],k;
void getp(long long n)//求出n的所有素因子 放入p[i]
if(n>1)
p[k++]=n;
} long long nop(long long m) //nop(m)得到的是區間[1,m]中所有與n具有公因子的數的個數}}
以上~
8 4 集訓日記
今天看了有關組合數學的一些內容。首先,排列組合的 為 ll c ll n,ll m ll a ll n,ll m 一道組合數學 位運算的題,hdoj4810 wall painting 題目大意 有一位畫家,有 n種顏料,給出 n種顏料的值。然後在1到 n天中,他每天都會選擇相應天數的顏料數進行混合...
8 9 集訓日記
今天才知道好像要發好幾十篇部落格之後才不用審核 今天把數論的課件看了看,算是再複習一遍,掌握的更好吧。都是之前學過的內容,只是有些記不清的,也沒什麼好寫的,這裡整理一下位運算的課件吧。位運算 一 位運算子及規則1 按位與 全真則真 一假則假2 按位或 一真則真3 按位異或 同則假 異則真4 左移5 ...
8 10 集訓日記
今天上午看了有關單調佇列的課件,明天一起整理。下午做了練習賽,在這兒寫一下ac的三道題。b題,很水的一道題,求數字金字塔中經過數字的最大和。ac 及註解如下 include using namespace std int a 351 351 int main for int i n 1 i 1 i ...