POJ1091 跳蚤 容斥

2021-08-07 12:01:37 字數 1211 閱讀 7260

解題報告:

設數字分別為a1

,a2,

a3……

m ,那麼若方程x1

a1+x

2a2+

……xn

+1m=

1有解 ,則這張卡片可行。而此方程有解的充要條件為gc

d(a1

,a2,

a3……

m)=1

,所以本題即為求gc

d(a1

,a2,

a3……

m)=1

,1≤a

1,a2

,a3…

…an≤

m 的方案數。

那麼可以反著求gc

d(a1

,a2,

a3……

m)≠1

,1≤a

1,a2

,a3…

…m≤m

的方案數。,再用總方案數nm

減去即可。

又因為m是知道的,所以可以先將m分解質因數為p1

,p2,

p3……

pcnt

,那麼a1

,a2,

a3……

m 有公因子px

的方案數即為⌊m

px⌋n

,但會算重,容斥一下即可,我的**中是用二進位制數表示選哪幾個質因子的,也可以深搜。

#include

#include

#include

#include

#include

#include

#define ll unsigned long long

using

namespace

std;

const

int n=35;

int n,m,p[n],cnt;

ll ans=1;

int getint()

int main()

if(tmp>1)p[++cnt]=tmp;

for(int i=1;i<=n;i++)ans*=m;

for(ll i=1;i<(1

<1,d=1,tot=1;

for(int j=1;j<=cnt;j++)

for(int j=1;j<=n;j++)tot*=m/d;

ans+=tot*f;

}cout

0;}

跳蚤 POJ 1091 容斥原理

跳蚤time limit 1000ms memory limit 10000k total submissions 8723 accepted 2601 description z城市居住著很多只跳蚤。在z城市週六生活頻道有乙個娛樂節目。乙隻跳蚤將被請上乙個高空鋼絲的正 鋼絲很長,可以看作是無限長。...

poj1091 跳蚤 容斥原理

思路 假設跳蚤選擇x1個第一張卡片,x2個第二張卡片。xn個第n張卡片,xn 1張寫著m的卡片,那麼就可以列出方程 a1 x1 a2 x2 an xn m x n 1 1 由於可以向左跳和向右跳,因此題目即問上述不定方程是否有解?答案以及它的證明可以在任何一本數論書中找到,它的充要條件是 a1,a2...

poj 1091 跳蚤(不定方程 容斥)

跳蚤 time limit 1000ms memory limit 10000k total submissions 8731 accepted 2605 description z城市居住著很多只跳蚤。在z城市週六生活頻道有乙個娛樂節目。乙隻跳蚤將被請上乙個高空鋼絲的正 鋼絲很長,可以看作是無限長...