多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > BZOJ 2818: Gcd區(qū)間內(nèi)最大公約數(shù) 為素數(shù)的對數(shù)(歐拉函數(shù)的應(yīng)用)

BZOJ 2818: Gcd區(qū)間內(nèi)最大公約數(shù) 為素數(shù)的對數(shù)(歐拉函數(shù)的應(yīng)用)

來源:程序員人生   發(fā)布時間:2016-06-29 18:20:20 閱讀次數(shù):3021次

傳送門
2818: Gcd

Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 3649 Solved: 1605
[Submit][Status][Discuss]
Description

給定整數(shù)N,求1<=x,y<=N且Gcd(x,y)為素數(shù)的
數(shù)對(x,y)有多少對.

Input

1個整數(shù)N

Output

如題

Sample Input

4

Sample Output

4
HINT

hint

對樣例(2,2),(2,4),(3,3),(4,2)

1<=N<=10^7

Source

湖北省隊互測

解題思路:
這個題是讓求的<=n的GCD(x,y)==素數(shù)的個數(shù)(2,4)和(4,2)認(rèn)為是不1樣的,那末我們可以想到枚舉每個素數(shù),讓其GCD(x,y)=p,那末我們可以想到在[1,y/p]內(nèi)與y/p互素的個數(shù)(在這里默許 y>x),那末我們就是求1個歐拉函數(shù)值,那末我們將其擴(kuò)大到1-n區(qū)間內(nèi),就是求[1,n/p]的歐拉函數(shù)值,但是我們需要求的是sigmaEualr(n/p)的前綴和,由于y是從1-n之間取的,所以對數(shù)就是sum[n/p]*2⑴,由于是對數(shù),而且還有重復(fù)的情況(本身是素數(shù)的情況)

具體詳見代碼:

#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> using namespace std; typedef long long LL; const LL MAXN = 1e7+5; bool prime[MAXN];///標(biāo)記數(shù)組是否是素數(shù) LL phi[MAXN];///歐拉函數(shù)值,i的歐拉函數(shù)值=phi[i] LL p[MAXN];///素因子的值 LL cnt = 0; void get_Phi()///篩法求歐拉函數(shù) { cnt = 0; memset(prime, true, sizeof(prime)); phi[1] = 1; for(LL i=2; i<MAXN; i++)///線性篩法 { if(prime[i])///素數(shù) { p[cnt++] = i; phi[i] = i-1;///素數(shù)的歐拉函數(shù)值是素數(shù) - 1 } for(LL j=0; j<cnt; j++) { if(i*p[j] > MAXN) break; prime[i*p[j]] = false;///素數(shù)的倍數(shù),所以i*p[j]不是素數(shù) if(i%p[j] == 0)///性質(zhì):i mod p == 0, 那末 phi(i * p) == p * phi(i) { phi[i*p[j]] = p[j] * phi[i]; break; } else phi[i*p[j]] = (p[j]-1) * phi[i];///i mod p != 0, 那末 phi(i * p) == phi(i) * (p⑴) } } } LL sum[MAXN];///前綴和 void get_sum() { memset(sum, 0, sizeof(sum)); for(LL i=1; i<MAXN; i++) sum[i] = sum[i-1]+phi[i]; } int main() { get_Phi(); get_sum(); LL n; while(~scanf("%lld",&n)) { LL ans = 0; for(LL i=0; i<cnt&&p[i]<=n; i++) { ans = ans+sum[n/p[i]]*2-1; } printf("%lld\n",ans); } return 0; }
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 最新jizz欧美| 日本护士做xxxxxhd | 天堂网址| 亚洲欧洲日产国产 最新 | 免费xx视频| 亚洲大尺度 | 黄a大片| 欧美一级在线全免费 | 欧美一区二区三区精品国产 | 日韩欧美亚洲国产精品字幕久久久 | 免费黄色福利 | 欧美jizz18性欧美年轻 | 亚洲一级毛片 | www.视频| 亚洲免费视频观看 | 玖玖爱国产 | 欧美激情久久久久久久大片 | 亚洲亚洲人成网站在线观看 | 久久久久久久久久久96av | 欧美gv免费video在线观看 | 91亚洲欧美综合高清在线 | 日本一区二区三区免费看 | 在线观看操 | 永久手机看片福利盒子 | 噜噜噜噜噜在线观看视频 | 天天综合网天天做天天受 | 欧美人与性另类 | 69视频在线观看 | 红豆视频日本高清 | 日本一二三四区免费视频 | 欧美日韩一区二区高清视 | 在线播放精品视频 | 国产日韩亚洲欧洲一区二区三区 | 欧美三级大片在线观看 | 99视频精品全部在线播放 | 亚洲成aⅴ人片在线观 | 欧美在线精品一区二区三区 | 男人午夜免费视频 | 亚洲国产成人在线视频 | 中欧free性video巴西 | 在线亚洲自拍 |