hdu6390(尤拉線性塞 逆元表)

2021-08-23 12:03:12 字數 2222 閱讀 3241

思路:若n是質數p的k次冪(即n=p^k),φ(n)=p^k-p^(k-1)=(p-1)p^(k-1)。若m,n互質,φ(mn)=(m-1)(n-1)=φ(m)φ(n)。運用尤拉函式這兩個性質可以將問題化簡成求最大公約數是1~min(m,n)這些數的個數。

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

typedef long long ll;

typedef unsigned long long ull;

const ll inff = 0x3f3f3f3f3f3f3f3f;

#define for(i,a,b) for(int i(a);i<=(b);++i)

#define fol(i,a,b) for(int i(a);i>=(b);--i)

#define rew(a,b) memset(a,b,sizeof(a))

#define inf int(0x3f3f3f3f)

#define si(a) scanf("%d",&a)

#define sl(a) scanf("%i64d",&a)

#define sd(a) scanf("%lf",&a)

#define ss(a) scanf("%s",a)

#define mod ll(998244353)

#define pb push_back

#define lc d<<1

#define rc d<<1|1

#define pll pair#define p pair#define pi acos(-1)

ll phi[1000008],p[1000008],tot,n,m,inv[1000008],pr[1000008>>2],mo,f[1000008];

void gphi(int n)

else phi[i*pr[j]]=phi[i]*(pr[j]-1);}}

}int main()

cout《附帶乙份莫比烏斯的:

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

typedef long long ll;

typedef unsigned long long ull;

const ll inff = 0x3f3f3f3f3f3f3f3f;

#define for(i,a,b) for(int i(a);i<=(b);++i)

#define fol(i,a,b) for(int i(a);i>=(b);--i)

#define rew(a,b) memset(a,b,sizeof(a))

#define inf int(0x3f3f3f3f)

#define si(a) scanf("%d",&a)

#define sl(a) scanf("%i64d",&a)

#define sd(a) scanf("%lf",&a)

#define ss(a) scanf("%s",a)

#define mod ll(998244353)

#define pb push_back

#define lc d<<1

#define rc d<<1|1

#define pll pair#define p pair#define pi acos(-1)

ll pr[1000008],mu[1000008],tot,a,n,c,m,k,phi[1000008],p[1000008],mo,inv[1000008];

bool vis[1000008];

void mobious(int n)

else mu[k]=-mu[i];}}

}void gphi(int n)

else phi[i*pr[j]]=phi[i]*(pr[j]-1);}}

}ll as(ll n,ll m)

int main()

return 0;

}

再習尤拉 線性 篩素數

尤拉篩,是一種可以o n 篩出1 n範圍內的素數的篩法,比 篩的o nlogn 埃式篩的o nloglogn 都要快一些,還可以根據題目搞出一些最大約數啊之類的東西 void euler pick int n p是用於儲存素數的 相信你可能對於 i p j 0,break 這句話有疑問 首先你要知道...

HDU 尤拉迴路

problem description 尤拉迴路是指不令筆離開紙面,可畫過圖中每條邊僅一次,且可以回到起點的一條迴路。現給定乙個圖,問是否存在尤拉迴路?input 測試輸入包含若干測試用例。每個測試用例的第1行給出兩個正整數,分別是節點數n 1 n 1000 和邊數m 隨後的m行對應m條邊,每行給出...

hdu5348 尤拉迴路 尤拉路徑

題意 n個點m條邊的無向圖,問是否滿足將所有邊變為有向後,每個點入度和出度的點不超過1 include include include include include using namespace std struct nodeg 1000005 int cnt,sign,deg 200005 h...