日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[洛谷1390]公约数的和

發布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [洛谷1390]公约数的和 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目大意:

求$\displaystyle{\sum_{1\leq i<j\leq n}}gcd(i,j)$的值。

思路:

?

由于數據水,可以直接用動態規劃做。
用$f_k$表示在n以內以$k$為$gcd$的整數對個數,那么可以得到狀態轉移方程:
$f_i=\lfloor\frac{n}{i}\rfloor-\displaystyle{\sum_{j=2}^{\lfloor\frac{n}{i}\rfloor}}f_{ij}$
因為要減去$gcd(d,d)=d$的和$gcd(i,j)=gcd(j,i)$重復的,答案為:
$\frac{\displaystyle{\sum_{i=1}^n}f_i-\frac{n\times n+1}{2}}{2}$

1 #include<cstdio> 2 const long long N=2000001; 3 long long f[N]={0}; 4 inline long long sqr(const long long x) { 5 return x*x; 6 } 7 int main() { 8 long long n; 9 scanf("%lld",&n); 10 long long ans=0; 11 for(long long i=n;i;i--) { 12 f[i]=sqr(n/i); 13 for(long long j=2;j<=n/i;j++) { 14 f[i]-=f[i*j]; 15 } 16 ans+=f[i]*i; 17 } 18 printf("%lld\n",(ans-n*(n+1)/2)/2); 19 return 0; 20 }

?

轉載于:https://www.cnblogs.com/skylee03/p/7364599.html

總結

以上是生活随笔為你收集整理的[洛谷1390]公约数的和的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。