線性篩約數個數和、約數和
#include<cstdio> using namespace std; #define N 1000001 bool vis[N]; int prime[N]; int t[N],e[N]; int main() { int n; scanf("%d",&n); int cnt=0; t[1]=1; for(int i=2;i<=n;++i) { if(!vis[i]) { prime[++cnt]=i; t[i]=2; e[i]=1; } for(int j=1;j<=cnt;++j) { if(i*prime[j]>n) break; vis[i*prime[j]]=true; if(i%prime[j]==0) { t[i*prime[j]]=t[i]/(e[i]+1)*(e[i]+2); e[i*prime[j]]=e[i]+1;break; } else { t[i*prime[j]]=t[i]*2; e[i*prime[j]]=1; } } } long long ans=0; for(int i=1;i<=n;++i) ans+=t[i]; printf("%lld",ans); }
相關推薦
線性篩約數個數和、約數和
#include<cstdio> using namespace std; #define N 1000001 bool vis[N]; int prime[N]; int t[N],e[N]; int main() { int n; sc
約數定理(約數個數定理,約束和定理)
約數個數定理: 對於一個大於1正整數n可以分解質因數: 則n的正約數的個數就是 。 其中a1、a2、a3…ak是p1、p2、p3,…pk的指數。 定理簡證: 首先同上,n可以分解質因數:n=p1^a1×p2^a2×p3^a3*…*pk^ak, 由約
從鍵盤中輸入一個整數n,求1-n的和,以及偶數和、奇數和
n=int(input("從鍵盤中輸入一個數:")) sum1=0 sum2=0 sum3=0 i=1 while i<=n: sum1+=i if i%2==0: sum2+=i else:
Python演算法----求1-100之間的偶數和、奇數和
i = 1 sum1 = 0 sum2 = 0 while i <= 100: if i % 2 == 0: sum1 += i else: sum2 += i i +=1 print(“1-100之間偶數和為:%d” % sum1) print(“1-1
線性篩約數個數、約數和的新方法
n) http 約數 質因子 9.png int pan 思考 -s 最近本人腦洞大開,發現了一種線性篩約數個數和約數和的一種神奇方法。 網上的方法我看基本都是利用num[i]數組記錄i最小的質因子的個數,然後再搞搞。 我認為可以省去num[i]數組,直接進行遞推。 我們知
數學 線性篩約數個數和,約數和
線性篩約數個數和,約數和 一,線性篩約數個數和 根據唯一分解定理,可得: \[ n=p_1^{r_1}*p_2^{r_2}*……*p_k^{r_k} \] 對於每個n的約束,肯定是由以上質因數\(p_k\)相乘得來的,那麼根據乘法原理,每個質因數都可以選擇\(0\)到\(r_k\)這\(r_k+1
#莫比烏斯反演,整除分塊,線性篩#bzoj 3994 洛谷 3327 [SDOI2015]約數個數和
題目 設 d ( x )
[杜教篩 約數個數字首和] BZOJ 4176 Lucas的數論
套用陳老師r老師等式後反演 #include<cstdio> #include<cstdlib> #include<algorithm> #include
python實現遞迴和非遞迴求兩個數最大公約數、最小公倍數
最大公約數和最小公倍數的概念大家都很熟悉了,在這裡就不多說了,今天這個是因為做題的時候遇到了所以就寫下來作為記錄,也希望幫到別人,下面是程式碼: #!/usr/bin/env python #coding:utf-8 from fractions import gc
線性篩約數和函數
ret bre 函數 int cpp gist reg print for 挺麻煩的,就當存一下板子了 #include<iostream> #include<cstring> #include<cstdio> #define maxn
[BZOJ3994][SDOI2015]約數個數和
-s math pre ret 表達 cnblogs void sin bre BZOJ Luogu 題意: 給定n,m,求\(\sum_{i=1}^{n}\sum_{j=1}^{m}d(ij)\),其中\(d(x)\)表示x的約數個數。多組數據,n,m<=50000
洛谷P3327 [SDOI2015]約數個數和 【莫比烏斯反演】
ios wap 文件包含 long define line tchar pan 包含 題目 設d(x)為x的約數個數,給定N、M,求\(\sum_{i = 1}^{N} \sum_{j = 1}^{M} d(ij)\) 輸入格式 輸入文件包含多組測試數據。第一行,一個整數T
【刷題】BZOJ 3994 [SDOI2015]約數個數和
name max ima a* register eof void rip 數據 Description 設d(x)為x的約數個數,給定N、M,求 Input 輸入文件包含多組測試數據。 第一行,一個整數T,表示測試數據的組數。 接下來的T行,每行兩個整數N、M。 Out
bzoj3994:[SDOI2015]約數個數和
http mat print Go prim span geo 映射 com 題目鏈接 bzoj 3994: [SDOI2015]約數個數和 題解 結論與結論的證明參考了rqy的博客 計算\(d(ij)\)時,把ij的每個約數d映射到\((a=gcd(d,i),b=(gcd
BZOJ3994:[SDOI2015]約數個數和——題解
min 博客 ace bre sdn .cn +++ HR HP http://www.lydsy.com/JudgeOnline/problem.php?id=3994 https://www.luogu.org/problemnew/show/P3327#sub 參考:
[SDOI2015]約數個數和
pac mes 計算 輸入格式 sdoi efi sta 接下來 bits 原題鏈接 題目描述 設\(d(x)\)為\(x\)的約數個數,給定\(N、M\),求\(\sum_{i=1}^{N}\sum_{j=1}^{m}d(ij)\) 輸入輸出格式 輸入格式: 輸入文
bzoj3994: [SDOI2015]約數個數和(莫比烏斯反演+分塊)
put name 一行 AI algorithm scan space 代碼 print www.cnblogs.com/shaokele/ bzoj3994: [SDOI2015]約數個數和 Time Limit: 20 Sec Memory Limit: 1
【題解】洛谷6月月賽 —— 「數學」約數個數和
分解 pri clas left pac 這樣的 DC 兩個 探測 看德國戰墨西哥去了結果發現比賽只剩下30分鐘……當然之後又思考這題挺久也還是不會做。看了一下題解,覺得這個做法挺厲害的,在這裏記錄一下: 原式實際上就是:(\(K +=
BZOJ.3994.[SDOI2015]約數個數和(莫比烏斯反演)
bre pro tps ali pan ons -m online 莫比烏斯反演 題目鏈接 \(Description\) 求\[\sum_{i=1}^n\sum_{j=1}^md(ij)\] \(Solution\) 有結論:\[d(nm)=\sum_{i|d}\sum_
洛谷P3327 [SDOI2015]約數個數和(莫比烏斯反演)
預處理 www oid com int pen init main 個性 傳送門 公式太長了……我就直接抄一下這位大佬好了……實在懶得打了 首先據說$d(ij)$有個性質$$d(ij)=\sum_{x|i}\