BZOJ3643 尤拉函式,搜尋

2022-05-04 08:45:16 字數 859 閱讀 4381

給定乙個數x,我們可以求出phi(x)

那給定乙個數k(k<1e6),如何求出phi(x)=k的解呢

容易知道k為奇數時唯有k=1有解x=1,其餘無解

假設n有素冪因子分解$n=^^\cdots^$

因為$\phi(x)=\prod\limits_^^(p_j-1)$

所以$1由此篩選出一些質數,同時記錄它的最高冪次

然後用dfs遍歷所有的情況,找到答案就將答案加入ans

以k=8為例,設$x=2^a3^b5^c$

對於2,有$(2-1)2^\mid 8$,則a最大為4

對於3,有$(3-1)3^\mid 8$,則b最大為1

對於5,有$(5-1)5^\mid 8$,則c最大為1

再進行bfs搜尋,得到可行解ab

cx01

11540

01620

12031

02411

130發現某些偶數是無解的,隨著x的增大,phi(x)似乎越來越稀疏

#include #include #include #include using namespace std;

typedef long long ll;

const int n=500000+5;

bool prime[n];

int p[n], tot=0;

//線篩

void initp()

return ret;

}typedef pairpr;

vectorans;

vectorv;

int num[100];//儲存狀態

void add()

return 0;

}

bzoj4173(尤拉函式)

資料大 10 15次方 公式複雜 不知道怎麼化簡 然後,感覺滿足打表找規律,發現sigema phi k k屬於s n,m n m。再求兩個phi就好,注意在括號裡面mod之後,需要在括號外面再mod一次,否則會wa。標準證明 總結1 很多的問題,通過小範圍資料打表,是非常便於幫助分析題目的性質的,...

bzoj 2818 尤拉函式

思路 就是對於某個數q,跟他互質的數p,kp和kq的最大公約數是k,那麼這個數能組成的答案的數量就是phi i 乘以某個質數,且乘積小於n 基於這種思路寫下這個 include include include include include include include include inclu...

BZOJ 4802 尤拉函式

已知n,求phi n 正整數n。n 10 18 輸出phi n 84 很明顯,這樣的題就是一道十分簡單的入門題。只是n比較大,但輸入和輸出都還沒有爆long long。如果輸入高精度數,那 就很噁心了 雖然可以定義大整數類big int phi n n 1 1 p 所以是miller rabin和p...