poj1091 容斥原理的應用

2022-03-21 02:57:27 字數 1088 閱讀 8055

這個題的意思是給你n+1個數, a1 a2 ... an an+1 其中 1<=ai<=m  i!=n+1  an+1 = m, 求解存在x1..xn+1使x1*a1+x2*a2+x3*a3+..+xn+1*an+1 = 1的a序列的個數, 由數論部分知識我們可以知道上式要滿足就得使(a1, a2, a3, .. an, an+1) = 1,   我們還能知道存在一些a序列他們的最大公約數不等於1, 然而我們要統計其中最大公約數為1的個數, 就可以使用容斥原理, 稍加思考我們可以發現(a1, a2 .. an+1) = 1的反面是(a1, a2, ... an+1)= pi的倍數, pi是m = pi^ai次方中的pi, 因此我們定義ai為a序列最大公約數為pi的倍數的方案數根據容斥原理有 res = s - (a1+a2+...ak) + (ai並aj i!=j) - ...... **如下:

#include #include 

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int maxn = 100000 + 10

;ll n, m;

ll pi[maxn], npi;

bool

vis[maxn];

intprime[maxn], num;

void shai(int

n)ll pow(ll a, ll b)

//a^b

return

res;

}int

main()

if(flog) npi++;

if(tp == 1) break

; }

if(tp!=1) pi[npi++] = tp; //

這裡出完所有素數後有可能不為1

ll res = 0

;

for(int i=1; i<(1

<)

cout

}return0;

}

跳蚤 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...

POJ1091 跳蚤 容斥

解題報告 設數字分別為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 a...