python莫比乌斯内接矩形_莫比乌斯反演部分习题 - osc_9uwqh9yn的个人空间 - OSCHINA - 中文开源技术交流社区...

本文主要是介绍python莫比乌斯内接矩形_莫比乌斯反演部分习题 - osc_9uwqh9yn的个人空间 - OSCHINA - 中文开源技术交流社区...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近写反演题也快没头了,各种线性不会筛,各种卡常……

于是决定写一篇专题,来记录一下我写过的反演题目。

BZOJ1101:

求1<=i<=n,1<=j<=m,gcd(i,j)==d的对数。

先让n/=d,m/=d,变成求gcd(i,j)==1的对数。

09d48dcfc1150591c884e96d19a4c6414f8.jpg

然后预处理出μ(d)的前缀和,O(sqrt(n))枚举d即可。

代码:

1c1410e309880482a53c13f3cb708c1fed0.jpg

2195dc91913ca896808bb062646e99c3a50.jpg

1 #include

2 #include

3 #include

4 #include

5 #define lli long long int

6 using namespacestd;7 const int maxn=5e4+1e2;8

9 intmu[maxn];10 lli sum[maxn];11

12 inline voidgen() {13 static intprime[maxn],cnt;14 static unsigned charvis[maxn];15 sum[1] = mu[1] = 1;16 for(int i=2;i

33 inline lli calc(int n,intm) {34 lli ret = 0;35 if( n >m )36 swap(n,m);37 int pos = 0;38 for(int i=1;i<=n;i=pos+1) {39 pos = min( n / ( n / i ) , m / ( m /i ) );40 ret += ( sum[pos] - sum[i-1] ) * ( n / i ) * ( m /i );41 }42 returnret;43 }44

45 intmain() {46 static intT;47 inta,b,d;48

49 gen();50

51 scanf("%d",&T);52

53 while( T--) {54 scanf("%d%d%d",&a,&b,&d);55 a /= d , b /=d;56 printf("%lld\n",calc(a,b));57 }58

59 return 0;60 }

View Code

BZOJ2301:

求二维区间gcd(a,b)==k,利用二维前缀和思想转化为1101即可。

代码:

a0c0204951b99e87e930e6af80ff4cb34e4.jpg

f1afec7ac3a30baa7e288e8dc27222cf7cd.jpg

1 #include

2 #include

3 #include

4 #include

5 #define lli long long int

6 #define debug cout

7 using namespacestd;8 const int maxn=5e4+1e2;9

10 lli summu[maxn],ans;11

12 inline void getmu(intlim) {13 static intprime[maxn],mu[maxn],cnt;14 static charvis[maxn];15 mu[1] = 1;16 for(int i=2;i<=lim;i++) {17 if( !vis[i] )18 prime[++cnt] =i,19 mu[i] = -1;20 for(int j=1;j<=cnt&&i*prime[j]<=lim;j++) {21 vis[i*prime[j]] = 1;22 mu[i*prime[j]] = -mu[i];23 if( ! ( i %prime[j] ) ) {24 mu[i*prime[j]] = 0;25 break;26 }27 }28 }29 for(int i=1;i<=lim;i++)30 summu[i] = summu[i-1] +mu[i];31 }32

33 inline lli calc(lli n,lli m) {34 lli ret = 0;35 const lli t =min(n,m);36 for(lli i=1,j;i<=t;i=j+1) {37 j = min( n / ( n / i ) , m / ( m /i ) );38 ret += ( summu[j] - summu[i-1] ) * ( n / i ) * ( m /i );39 }40 returnret;41 }42

43 intmain() {44 static intt,a,b,c,d,k;45 getmu(5e4);46 scanf("%d",&t);47 while( t--) {48 scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);49 a-- , c--;50 a /= k , b /= k , c /= k , d /=k;51 ans = calc(b,d) + calc(a,c) - calc(b,c) -calc(a,d);52 printf("%lld\n",ans);53 }54 return 0;55 }

View Code

BZOJ2820:

求二维gcd为质数。是质数这一点不太好处理,暂且留着它。

a32a87d27312e2eb0cb0568faf31fc1f706.jpg

然后我们nlogn筛出后面那个东西,跑前缀和,O(sqrt(n))枚举p即可。

代码:

05c6abc74a0d28965233e0577ecd177d5de.jpg

754545928f2c72ed6bb2e466d71c760001a.jpg

1 #include

2 #include

3 #include

4 #include

5 #define lli long long int

6 #define debug cout

7 using namespacestd;8 const int maxn=1e7+1e2;9

10 lli f[maxn];11

12 inline voidgetf() {13 static intmu[maxn],prime[maxn],cnt;14 static charvis[maxn];15

16 mu[1] = 1;17 for(int i=2;i

40 inline lli calc(lli n,lli m) {41 const lli mi =min(n,m);42 lli ret = 0;43 for(lli i=1,j;i<=mi;i=j+1) {44 j = min( n / ( n / i ) , m / ( m /i ) );45 ret += ( f[j] - f[i-1] ) * ( n / i ) * ( m /i );46 }47 returnret;48 }49

50 intmain() {51 static intt;52 staticlli n,m;53 getf();54

55 scanf("%d",&t);56 while( t--) {57 scanf("%lld%lld",&n,&m);58 printf("%lld\n",calc(n,m));59 }60

61 return 0;62 }

View Code

BZOJ3529:

我们能枚举gcd,算出gcd为(i)的组数g(i)为:

e961439991dfc23bd5d8dea72325fa593e7.jpg

对于a没有限制,我们能化简为:

ce0291bb3f39cd89dd954a2ebc3fe1705ee.jpg

注意到n,m范围很小,我们能nlogn筛出后面的那个卷积,然后按照a递增插入坐标为d的树状数组并用树状数组的前缀和计算答案。复杂度nlog^2n。因为此题卡常,所以用int自然溢出取模。

代码:

6c374063a4b95c8230cd9a277cc48604eec.jpg

b6b64f5e25400a1180f1230a70646673025.jpg

1 #include

2 #include

3 #include

4 #include

5 #define debug cout

6 using namespacestd;7 const int maxn=1e5+1e2;8 const int mod=0x7fffffff;9

10 structBinaryIndexTree {11 intdat[maxn];12 #define lowbit(x) ( x & -x )

13 inline void update(int pos,intx) {14 while( pos

27 structQNode {28 intn,m,a,id;29 friend bool operator < (const QNode &a,const QNode &b) {30 return a.a

40 intmu[maxn];41 intans[maxn],n,m,t;42

43 inline voidpre() {44 static intprime[maxn],cnt;45 static charvis[maxn];46 mu[1] = 1;47 for(int i=2;i

67 inline int calc(int n,intm) {68 int ret = 0 , lim =min(n,m);69 for(int i=1,j;i<=lim;i=j+1) {70 j = min( n / ( n / i ) , m / ( m /i ) );71 ret += ( n / i ) * ( m / i ) * ( bit.query(j) - bit.query(i-1) );72 }73 return ret &mod;74 }75

76 inline voidgetans() {77 sort(ns+1,ns+1+n);78 sort(fs+1,fs+maxn);79 int pos = 0;80 for(int i=1;i<=n;i++) {81 while( pos + 1 < maxn && fs[pos+1].f <=ns[i].a ) {82 ++pos;83 for(int j=fs[pos].div;j

90 intmain() {91 scanf("%d",&n);92 for(int i=1;i<=n;i++)93 scanf("%d%d%d",&ns[i].n,&ns[i].m,&ns[i].a),94 ns[i].id =i;95 pre();96 getans();97

98 for(int i=1;i<=n;i++)99 printf("%d\n",ans[i]);100

101 return 0;102 }

View Code

BZOJ2154:

363eecfb0e2375cb7ae7e6b948fa85e63de.jpg

然后后面等差数列求和,筛出μ(d)*d*d即可。

代码:

4a92515e4ca119b638b8ece18d23c29ca1b.jpg

6042f6c4f25bcd6023806af894442526f59.jpg

1 #include

2 #include

3 #include

4 #include

5 #define lli long long int

6 #define debug cout

7 using namespacestd;8 const int maxn=1e7+1e2;9 const int mod = 20101009;10

11 lli sum[maxn],ss[maxn];12 lli n,m;13

14 inline void pre(lli lim) { //don't prepare to maxn.

15 static intprime[maxn],cnt;16 static charvis[maxn];17

18 sum[1] = 1;19 for(lli i=2;i<=lim;i++) {20 if( !vis[i] ) {21 prime[++cnt] =i,22 sum[i] = -1;23 }24 for(int j=1;j<=cnt&&i*prime[j]<=lim;j++) {25 vis[i*prime[j]] = 1;26 sum[i*prime[j]] = -sum[i];27 if( ! ( i %prime[j]) ) {28 sum[i*prime[j]] = 0;29 break;30 }31 }32 }33 for(int i=1;i<=lim;i++)34 sum[i] = sum[i] * i * i %mod;35 for(int i=1;i<=lim;i++) {36 sum[i] += sum[i-1],37 sum[i] = ( sum[i] % mod + mod ) %mod;38 ss[i] = ( ss[i-1] + i ) %mod;39 }40 }41

42 inline lli fnm(lli n,lli m,lli step) {43 n /= step , m /=step;44 return ( ( n + 1 ) * n >> 1 ) % mod * ( ( ( m + 1 ) * m >> 1 ) % mod ) %mod;45 }46 inline lli f(lli n,lli m) {47 lli ret = 0 , lim =min( n , m );48 for(lli i=1,j;i<=lim;i=j+1) {49 j = min( n / ( n / i ) , m / ( m /i ) );50 ret += ( ( sum[j] - sum[i-1] ) % mod + mod ) % mod * fnm(n,m,i) %mod;51 ret = ( ret % mod + mod ) %mod;52 }53 returnret;54 }55 inline lli getans(lli n,lli m) {56 lli ret = 0 , lim =min( n , m );57 for(lli i=1,j;i<=lim;i=j+1) {58 j = min( n / ( n / i ) , m / ( m /i ) );59 ret += ( ( ss[j] - ss[i-1] ) % mod + mod ) % mod * f(n/i,m/i);60 ret = ( ret % mod + mod ) %mod;61 }62 returnret;63 }64

65 intmain() {66 scanf("%lld%lld",&n,&m);67 pre(min(n,m));68 printf("%lld\n",getans(n,m));69 return 0;70 }

View Code

BZOJ2693:

同上一题公式,多次询问。

我们定义

a7348f5f3658addab16ac26c7ba8bea05c3.jpg

然后这东西是这样子的:

7d12fe0db628f2e8fa38ddd8f1493334e10.jpg

然后后面的东西是可以线性筛的,当i%prime[j]不为0时直接相乘,等于0是f[i*prime[j]]=f[i],因为新加入的因子全被μ消掉了,剩下的还是原来的因子,自己画一下就明白了QAQ。

其实不用这样分析的,写一个暴力筛看一看,基本上前10个数就能把WA的筛法全都WA掉。实在不行交nlogn的也能拿到不少分数。

代码:

5b2f0983897928c376cca8fbfc2fa3ee38c.jpg

b652b6d30da7abbfe4bdee5240451545927.jpg

1 #include

2 #include

3 #include

4 #include

5 #define lli long long int

6 #define debug cout

7 using namespacestd;8 const int maxn=1e7+1e2,mx=1e7;9 const int mod=1e8+9;10

11 lli sum[maxn];12

13 inline voidpre() {14 static intprime[maxn],cnt;15 static charvis[maxn];16 sum[1] = 1;17 for(lli i=2;i<=mx;i++) {18 if( !vis[i] ) {19 prime[++cnt] =i;20 sum[i] = 1 -i;21 }22 for(int j=1;j<=cnt&&i*prime[j]<=mx;j++) {23 vis[i*prime[j]] = 1;24 sum[i*prime[j]] = sum[i] * sum[prime[j]] %mod;25 if( ! ( i %prime[j]) ) {26 sum[i*prime[j]] = ( sum[i] ) %mod;27 break;28 }29 }30 }31 for(int i=1;i<=mx;i++) {32 sum[i] = sum[i] * i %mod,33 sum[i] += sum[i-1],34 sum[i] = ( sum[i] % mod + mod ) %mod;35 }36 }37

38 inline lli calc(lli n,lli m,lli step) {39 n /= step , m /=step;40 return ( ( ( n + 1 ) * n >> 1 ) % mod ) * ( ( ( m + 1 ) * m >> 1 ) % mod ) %mod;41 }42 inline lli query(lli n,lli m) {43 lli ret = 0 , lim =min( n , m );44 for(lli i=1,j;i<=lim;i=j+1) {45 j = min( n / ( n / i ) , m / ( m /i ) );46 ret += calc(n,m,i) * ( ( sum[j] - sum[i-1] ) % mod + mod ) %mod;47 ret = ( ret % mod + mod ) %mod;48 }49 returnret;50 }51

52 intmain() {53 static intt,n,m;54 pre();55 scanf("%d",&t);56 while( t--) {57 scanf("%d%d",&n,&m);58 printf("%lld\n",query(n,m));59 }60 return 0;61 }

View Code

BZOJ3309:

515ca0a8583ca3ae920a7b558763e6eb686.jpg

右边的东西F(g)当然还是线性筛,分析一发发现:

对于g的唯一分解,如果所有质数的次数不相同,那么右面的F(g)为0,因为我们可以通过改变最小质数的位置使之为0,如果不全部相同,那么就会有一个是-a,一个是a-1(这时d=所有质数次数-1的连乘)的情况,这样消出来是-1。考虑上μ的影响,数值为(-1)^(k+1),k为分解后的质数个数。

代码:

931027461ef7a037b32886bcc49b30a3fed.jpg

5079309671051fafc4f5b11ed725f6b384b.jpg

1 #include

2 #include

3 #include

4 #include

5 #define lli long long int

6 #define debug cout

7 using namespacestd;8 const int maxn=1e7+1e2;9

10 lli sum[maxn];11

12 inline voidpre() {13 static intprime[maxn],most[maxn],pows[maxn],cnt;14 static charvis[maxn];15

16 for(lli i=2;i

19 prime[++cnt] =i;20 most[i] = 1 , pows[i] =i;21 }22 for(int j=1;j<=cnt&&i*prime[j]

39 inline lli query(lli n,lli m) {40 const lli lim =min(n,m);41 lli ret = 0;42 for(lli i=1,j;i<=lim;i=j+1) {43 j = min( n / ( n / i ) , m / ( m /i ) );44 ret += ( sum[j] - sum[i-1] ) * ( n / i ) * ( m /i );45 }46 returnret;47 }48

49 intmain() {50 pre();51 static intt,a,b;52 scanf("%d",&t);53 while(t--) {54 scanf("%d%d",&a,&b);55 printf("%lld\n",query(a,b));56 }57 return 0;58 }

View Code

BZOJ3944:

杜教筛裸题,自行学习吧。

另外,此题卡常,不要用map存。我是用数组+vis标记存的。清空的时候可以用达夫机器卡一下常,比memset快2333。

代码:

cefd852c9909df845b26caf4449a58a9786.jpg

32c9ff6a46614a0ecd7c5d4cd92f9452fb9.jpg

1 #pragma GCC optimize(2)

2 #include

3 #define lli long long int

4 #define uint unsigned int

5 using namespacestd;6 const uint maxn=1677025,maxm=1295;7

8 lli phi[maxn],mu[maxn];9 lli memphi[maxm],memmu[maxm];10 unsigned charvisphi[maxn],vismu[maxm];11 uintt,n;12

13 inline void reset(unsigned char* dst,uintlen) {14 uint ite = ( len + 7 ) >> 3;15 switch( len & 7u) {16 case 0 : do{ *dst++ = 0;17 case 7 : *dst++ = 0;18 case 6 : *dst++ = 0;19 case 5 : *dst++ = 0;20 case 4 : *dst++ = 0;21 case 3 : *dst++ = 0;22 case 2 : *dst++ = 0;23 case 1 : *dst++ = 0; }while(--ite);24 }25 }26

27 inline voidgen() {28 static uint prime[maxn/2],cnt;29 static unsigned charvis[maxn];30

31 phi[1] = mu[1] = 1;32 for(uint i=2;i

51 inline lli sumphi(uintx) {52 if( x > 1;58 for(uint i=2,j;i<=x;i=j+1) {59 j = x / ( x /i );60 ret -= ( (lli) ( j - i + 1 ) ) * sumphi( x /i );61 }62 visphi[mp] = 1;63 return memphi[mp] =ret;64 }65 inline lli summu(uintx) {66 if( x

80 inline uintgetint() {81 uint ret = 0 , ch =getchar();82 while( ch < '0' || ch > '9')83 ch =getchar();84 while( '0' <= ch && ch <= '9')85 ret = ret * 10 + ( ch - '0'),86 ch =getchar();87 returnret;88 }89

90 intmain() {91 gen();92 t =getint();93 while( t--) {94 reset(visphi,maxm);95 reset(vismu,maxm);96 n =getint();97 printf("%lld %lld\n",sumphi(n),summu(n));98 }99 return 0;100 }

View Code

BZOJ4407:

注意题目的k是不变的,否则不可做了……

日常反演,成:

98710eb4d961a68c7c3369bd9f5a51a13bf.jpg

(什么你推不出来这一步?回去做前面的题吧孩子)

然后考虑右边怎么筛,可以消去一个d然后用我在3309用的筛法,或者直接筛。

当i%prime[j]不为0时直接相乘,等于0是f[i*prime[j]]=f[i]*prime[j]^k。

为什么?考虑μ,新的含p^2的因数全为0了。其余的一些可以消掉的说。

代码:

63cc58aa8df2e926645fd0dfa38240399d5.jpg

554f76435543ebbb4898bc66143969e5076.jpg

1 #include

2 #include

3 #include

4 #define lli long long int

5 #define debug cout

6 using namespacestd;7 const int maxn=5e6+1e2;8 const int mod=1e9+7;9

10 lli sum[maxn];11 intk;12

13 inline lli fastpow(lli base) {14 int tme =k;15 lli ret = 1;16 while( tme ) {17 if( tme & 1)18 ret = ret * base %mod;19 base = base * base %mod;20 tme >>= 1;21 }22 returnret;23 }24 inline voidinit() {25 static intpows[maxn],prime[maxn],cnt;26 static charvis[maxn];27 pows[1] = sum[1] = 1;28 for(lli i=2;i

48 inline lli calc(lli n,lli m) {49 lli ret = 0 , lim =min(n,m);50 for(lli i=1,j;i<=lim;i=j+1) {51 j = min( n / ( n / i ) , m / ( m /i ) );52 ret += ( ( sum[j] - sum[i-1] ) % mod + mod ) % mod * ( n / i ) % mod * ( m / i ) %mod;53 ret = ( ret % mod + mod ) %mod;54 }55 returnret;56 }57

58 intmain() {59 static intT,n,m;60 scanf("%d%d",&T,&k);61 init();62 while( T--) {63 scanf("%d%d",&n,&m);64 printf("%lld\n",calc(n,m));65 }66 return 0;67 }

View Code

BZOJ4176:

547efbb458c7d2d7b50ab264cac8a06e057.jpg

杜教筛μ即可。

代码:

e2bf596c498df62744f928716df3c4f7868.jpg

d6de2d36b33932529cadea181b12997774f.jpg

1 #include

2 #include

3 #include

4 #include

5 #define lli long long int

6 #define debug cout

7 using namespacestd;8 const int maxn=1e6+1e2,lim=1e6;9 const int mod = 1000000007;10

11 lli mu[maxn],mem[maxn];12 intn;13

14 inline voidpre() {15 static intprime[maxn],cnt;16 static charvis[maxn];17 mu[1] = 1;18 for(lli i=2;i<=lim;i++) {19 if( !vis[i] ) {20 prime[++cnt] =i;21 mu[i] = -1;22 }23 for(int j=1;j<=cnt&&i*prime[j]<=lim;j++) {24 const int tar = i *prime[j];25 vis[tar] = 1;26 if( ! ( i %prime[j] ) ) {27 mu[tar] = 0;28 break;29 }30 mu[tar] = -mu[i];31 }32 }33 for(int i=1;i<=lim;i++)34 mu[i] += mu[i-1];35 }36 inline lli getmu(intp) {37 return p<=lim ? mu[p] : mem[n/p];38 }39 inline voidsieve() {40 int t = ( n + lim - 1 ) /lim;41 while( t ) {42 const int m = n /t;43 mem[t] = 1;44 for(lli i=2,j;i<=m;i=j+1) {45 j = m / ( m /i );46 mem[t] -= ( j - i + 1 ) * ( getmu(m/j) ) %mod;47 }48 mem[t] %=mod;49 t--;50 }51 }52 inline lli sum(lli n) {53 lli ret = 0;54 for(lli i=1,j;i<=n;i=j+1) {55 j = n / ( n /i );56 ret += ( j - i + 1 ) * ( n / i ) %mod,57 ret %=mod;58 }59 return ret * ret %mod;60 }61 inline lli f(lli n) {62 lli ret = 0;63 for(lli i=1,j;i<=n;i=j+1) {64 j = n / ( n /i );65 ret += ( getmu(j) - getmu(i-1) ) * sum( n / i ) %mod;66 ret = ( ret % mod + mod ) %mod;67 }68 returnret;69 }70

71 intmain() {72 scanf("%d",&n);73 pre();74 sieve();75 printf("%lld\n",f(n));76 return 0;77 }

View Code

BZOJ2005:

公式为:

855f3b38de992109f50cf23528edd324078.jpg

只考虑含gcd的部分就可以了。

把gcd变成id,根据id=phi*1进行反演。

e1cfd9c2e30fb31559fb0974a2d7838ee26.jpg

然后线性筛φ即可。

代码:

bbfbda02d5d0ac478a8a5e8f4c82a9070bd.jpg

b7730b57ca9c1b39e14c50f2ce198cdbc87.jpg

1 #include

2 #include

3 #include

4 #include

5 #define lli long long int

6 using namespacestd;7 const int maxn=1e5+1e2;8

9 lli phi[maxn];10 lli ans;11 intn,m;12

13 inline voidgen()14 {15 static intprime[maxn],cnt;16 static unsigned charvis[maxn];17

18 if( n > m ) //m is the limit number

19 swap(n,m);20

21 phi[1] = 1;22

23 for(int i=2;i<=m;i++)24 {25 if( !vis[i] )26 prime[++cnt] =i,27 phi[i] = i-1;28 for(int j=1;j<=cnt&&i*prime[j]<=m;j++)29 {30 vis[i*prime[j]] = 1;31 phi[i*prime[j]] = phi[i] * ( prime[j] - 1);32 if( ! ( i %prime[j]) )33 {34 phi[i*prime[j]] = phi[i] *prime[j];35 break;36 }37 }38 }39 }40

41 intmain()42 {43 scanf("%d%d",&n,&m);44

45 gen();46

47 for(int i=1;i<=n;i++)48 ans += phi[i] * ( n / i ) * ( m /i );49

50 ans = ans * 2 - ( (long long) n ) *m;51

52 printf("%lld\n",ans);53

54 return 0;55 }

View Code

其实还有BZOJ3561,只不过弃坑大法好了。

关于杜教筛存储方式的正确性:你进去查询的时候总是令n/i=x的最小(或最大)的i,所以存储在位置n/i的方式正确。

这篇关于python莫比乌斯内接矩形_莫比乌斯反演部分习题 - osc_9uwqh9yn的个人空间 - OSCHINA - 中文开源技术交流社区...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/164788

相关文章

Python重命名文件并移动到对应文件夹

《Python重命名文件并移动到对应文件夹》在日常的文件管理和处理过程中,我们可能会遇到需要将文件整理到不同文件夹中的需求,下面我们就来看看如何使用Python实现重命名文件并移动到对应文件夹吧... 目录检查并删除空文件夹1. 基本需求2. 实现代码解析3. 代码解释4. 代码执行结果5. 总结方法补充在

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了