成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

P1890gcd區(qū)間(愛思創(chuàng)題解)-創(chuàng)新互聯(lián)

gcd區(qū)間 題目描述

給定一行n個(gè)正整數(shù)a[1]…a[n]。

創(chuàng)新互聯(lián)建站成立十年來,這條路我們正越走越好,積累了技術(shù)與客戶資源,形成了良好的口碑。為客戶提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、申請域名、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。網(wǎng)站是否美觀、功能強(qiáng)大、用戶體驗(yàn)好、性價(jià)比高、打開快等等,這些對于網(wǎng)站建設(shè)都非常重要,創(chuàng)新互聯(lián)建站通過對建站技術(shù)性的掌握、對創(chuàng)意設(shè)計(jì)的研究為客戶提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。

m次詢問,每次詢問給定一個(gè)區(qū)間[L,R],輸出a[L]~a[R]的大公因數(shù)。

輸入格式

第一行兩個(gè)整數(shù)n,m。

第二行n個(gè)整數(shù)表示a[1]…a[n]。

以下m行,每行2個(gè)整數(shù)表示詢問區(qū)間的左右端點(diǎn)。

保證輸入數(shù)據(jù)合法。

輸出格式

共m行,每行表示一個(gè)詢問的答案。

樣例 #1 樣例輸入 #1

5 3 4 12 3 6 7 1 3 2 3 5 5

樣例輸出 #1

1 3 7

提示

對于30%的數(shù)據(jù),n<= 100, m<= 10

對于60%的數(shù)據(jù),m<= 1000

對于100%的數(shù)據(jù),1<= n<= 1000,1<= m<= 1,000,000

0< 數(shù)字大小<= 1,000,000,000
思路

我們看題不難發(fā)現(xiàn)題目是尋找a[L]~a[R]這片區(qū)間之內(nèi)的一個(gè)最值問題。不過這題中是求區(qū)間內(nèi)的大公因數(shù),區(qū)間!所以,要求:多次求解連續(xù)區(qū)域 a ~ b a\sim b a~b 的大公因數(shù)。我們能想到什么?很明顯!求區(qū)間最值問題的ST表,ST表不懂的看這里。

ST表模板
#includeusing namespace std;

typedef long long ll;
const int N = 100010;

int maxn[N][50];    //區(qū)間大值表
int lg[N];  //lg函數(shù),其實(shí)就是課上講的Log[N]

inline int read(){//快速輸入
    int x = 0,f=1;char ch = getchar();
    while(ch< '0' || ch >'9') {if(ch == '-') f = -1;ch = getchar();}
    while(ch >= '0' && ch<= '9'){x = x*10 + ch - '0'; ch = getchar();}
    return x*f;
}

int main(){int n,m;
    n = read(); m = read();

    for(int i = 1;i<=n;i++){//初始化
        maxn[i][0] = read();
    }

    for(int i = 2;i<=n;i++){//以2為底的lg求出來 ,最少要求到lgn,因?yàn)槲覀兪峭ㄟ^2^i去倍增區(qū)間長度的
        lg[i] = lg[i/2] + 1;
    }

    for(int i = 1;i<=lg[n];i++)     //建立st表,第一維是區(qū)間起始位置,第二維終止位置是2^i-1
        for(int j = 1;j + (1<maxn[j][i] = max(maxn[j][i-1],maxn[j+(1<<(i-1))][i-1]);
        }

    int l,r;
    while(m--){l = read(); r = read();

        int len = lg[r-l+1];

        //查詢,求兩個(gè)子區(qū)間的并集,,第二個(gè)區(qū)間的左端點(diǎn),這個(gè)端點(diǎn)我們不知道
        //就假設(shè)它為x,那么x + (1<
GCD求法
  1. while循環(huán)b!=0,使用輾轉(zhuǎn)相除法
int gcd(int a,int b)
{int r=a%b;
	while(r>0)
	{a=b;
		b=r;
		r=a%b;
	}
	return b;
}

2.使用遞歸,還是輾轉(zhuǎn)相除法

int gcd(int a,int b)
{return b==0?a:gcd(b,a%b);//遞歸+三目運(yùn)算符
}

遞歸法使用了三目運(yùn)算符,蒟蒻的不會(huì)的看這里。

這些都說完了,代碼來啦!

代碼
#includeusing namespace std;
const int N = 1e5+5;
int st[N][20];
int logg[N];
int n,m;
int gcd(int a,int b)
{if(b==0) return a;
	else return gcd(b,a%b);	
} 
int main()
{	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){scanf("%d",&st[i][0]);
	}
	for(int i=2;i<=n;i++) logg[i]=logg[i/2]+1;
	
	for(int j=1;j<=logg[n];j++){for(int i=1;i+(1<	st[i][j]=gcd(st[i][j-1],st[i+(1<scanf("%d%d",&l,&r);
		int x=logg[r-l+1];
		printf("%d\n",gcd(st[l][x],st[r-(1<
禁止抄襲!

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁名稱:P1890gcd區(qū)間(愛思創(chuàng)題解)-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://jinyejixie.com/article40/dpdheo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、定制網(wǎng)站、網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站制作、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

陆河县| 启东市| 牙克石市| 张家川| 土默特左旗| 库伦旗| 扬中市| 沛县| 长阳| 双桥区| 卢湾区| 南皮县| 横山县| 平度市| 车致| 额尔古纳市| 嘉善县| 和静县| 旌德县| 金川县| 桐柏县| 昭苏县| 东台市| 小金县| 禄丰县| 西吉县| 贡山| 额尔古纳市| 临颍县| 固始县| 绥宁县| 昌宁县| 筠连县| 保康县| 厦门市| 尼勒克县| 丹阳市| 达尔| 留坝县| 中西区| 邵阳市|