利用容斥原理求尤拉計劃565題的S(1E9,2017)
找出能被2017整除的小於或等於ubound平方根的質數的冪(1-9行) 加總能被2017整除的大於ubound平方根的質數的倍數,因為這些不同質數的倍數沒有公因數,因此它們之間不會重複 將ubound除以1-9行的值,得出倍數的個數,用等差數列公式求和 因為這些和包含重複計算,因此要扣除 第一列標黃部分是大於ubound平方根,但小於12101的最大倍數(82367)的能被2017整除的質數,因為它們在計算第5列標藍的資料時用過,需要扣除 只要質數冪乘以另一個質數冪的倍數小於ubound,都需要扣除 本題恰好只有1次方符合扣除條件 本題不存在3個質數冪連乘積小於ubound的情況 利用這個思路,不需要儲存已用過標記。利用篩法分步計算求可以求得S(1E11,2017)
難看的程式碼
int d[100000]= {0}; char b[100000]= {0}; int k=0; long long in_exclude() { //include int min_p=1e6; long long p_times[1000]; long long n=0; long long x=0; for(int i=0; i<k; i++) { x=pow(d[i],b[i]-1); if(x<min_p)min_p=x; if(x>NN)break; n=NN/x; sum0+=x*n*(n+1)/2; } printf("sum0=%lld\n",sum0); //exclude int j=0; for(int i=0; i<=NN/min_p; i++) if(a[i]==1 && (i+1)%mmm==0) { p_times[j++]=i; } int j1=j; for(int i=0; i<k; i++) { x=pow(d[i],b[i]-1); if(x<=sqrt(NN)) for(j=0; j<j1; j++) { if(NN/p_times[j]<x)break; if(x>p_times[j])continue; long long xx=x*p_times[j]; long long nn=NN/xx; if(nn<1)break; sum0-=xx*nn*(nn+1)/2; } } printf("sum=%lld\n",sum0); return sum0; }
相關文章
- HDU 1695-GCD(容斥原理+尤拉函式)GC函式
- 容斥原理
- #19. 計數(容斥原理)
- 【模板】容斥原理
- 容斥原理講解
- 尤拉計劃512題(冪的尤拉總計函式和)函式
- 遊戲裡面的容斥原理遊戲
- 容斥原理學習筆記筆記
- 容斥原理——數學知識
- HDU 4059 The Boss on Mars ( 容斥原理)
- 尤拉計劃595題:增量隨機排序隨機排序
- 尤拉計劃425題:質數連線
- 尤拉計劃463題:奇怪的遞迴關係遞迴
- HDU4390Number Sequence(容斥原理)
- HDU4407Sum ( 容斥原理)
- 尤拉計劃605題:結對投幣遊戲遊戲
- 容斥
- HDU 5468 Puzzled Elena(DFS序+容斥原理)
- 用尤拉計劃題目來學q語法
- HDU2841 Visible Trees (容斥原理)
- 反射容斥反射
- 尤拉計劃533題:卡邁克爾函式函式
- 000. 尤拉計劃簡介
- 尤拉計劃433題:歐幾里德演算法的步數演算法
- 對尤拉計劃427題(n-序列) 的一些分析
- bzoj 2655: calc [容斥原理 伯努利數]
- bzoj 3812: 主旋律 [容斥原理 狀壓DP]
- Codeforces 548E Mike and Foam (容斥+莫比烏斯反演)
- 有標號DAG計數 [容斥原理 子集反演 組合數學 fft]FFT
- 尤拉計劃695:隨機長方形隨機
- 尤拉計劃717:取模公式之和公式
- HDU 5072 Coprime (單色三角形問題+容斥原理)
- 尤拉計劃697:隨機衰減序列隨機
- 尤拉計劃713:圖蘭熱水系統
- Min-Max 容斥
- lg容斥與反演
- HDU 4135 Co-prime(容斥原理+分解質因數)
- cf449D. Jzzhu and Numbers(容斥原理 高維字首和)