hdu 2841 容斥原理

2021-08-14 22:42:35 字數 1087 閱讀 5194

/*

hdu 2841

題意大概是

你站在(0,0)點

給你乙個以(11,1)為頂點n*m的方格

每個交點處都有一棵樹

問你能看到幾棵樹

假設有兩棵樹

他們的座標分別為(x1,y1)(x2,y2)(x1>x2 y1>y2)

若(0,0)->(x1,y1)和(0,0)->(x2,y2)兩個向量平行

那麼後面的那個就看不到了

列出平行的式子:

x1=k*x2 y1=k*y2

所以只需要x1 y1互質

那麼就不平行

我們就能看到

以上就是思路

實現方法如下

只要對每一行進行列舉

把每一行能看到多少個求出來再相加就行

每一行怎麼求

我們可以把每個數先進行質因子分解

然後自由組合先算出有公約數(不互質)的有多少組

再用總數減就行————容斥原理

先算出每

*/#include

#include

#include

#include

#include

#include

#define ll long long

#define inf 2147483647

#define n 50

#define pi acos(-1)

#define eps 1e-8

using namespace std;

int work(int a,int b)

if(b>1)

prime[p++]=b;

int res=0;

for(int i=1;i<(1<>j)&1)==0)

continue;

tmp*=prime[j];

cnt++;

}if(cnt%2==0)

res=res-a/tmp;

else

res=res+a/tmp;

}return a-res;

}int main()

return 0;

}

hdu 4336 容斥原理

按照解題報告的提示,用容斥原理實現 for int j bg 1 j另解 概率dp,康哥指導的 include include includeusing namespace std double f 1 21 gl 22 int main int i,j,k,n double fz,fm while...

hdu4135 容斥原理

題意 給出a,b,n,求出 a,b 範圍內與n互素的數字的個數。即b範圍內的不與n互素的數減去a範圍內不與n互素的數,把 1,a 1,b 中不與n互素的數分別求出來,再減掉就是和n互素的數了。那麼首先將n分解質因數,因子和因子的倍數可以被除盡,一定不與n互素,把這些數都記下來,篩法求素數即可 然後把...

hdu 4135 容斥原理

剛接觸,有關因子個數的增加不太弄得好,然後看到了這個神奇的遞迴 ac include includeusing namespace std define ll long long ll a,b,ansa,ansb,ans,p 100 up void dfs int n,bool tag,ll num...