《演算法競賽高階指南》3 1質數

2021-09-24 05:59:54 字數 2045 閱讀 6938

給定兩個整數l和u,你需要在閉區間[l,u]內找到距離最接近的兩個相鄰質數c1和c2(即c2-c1是最小的),如果存在相同距離的其他相鄰質數對,則輸出第一對。

同時,你還需要找到距離最遠的兩個相鄰質數d1和d2(即d1-d2是最大的),如果存在相同距離的其他相鄰質數對,則輸出第一對。

輸入格式

每行輸入兩個整數l和u,其中l和u的差值不會超過1000000。

輸出格式

對於每個l和u ,輸出乙個結果,結果佔一行。

結果包括距離最近的相鄰質數對和距離最遠的相鄰質數對。(具體格式參照樣例)

如果l和u之間不存在質數對,則輸出「there are no adjacent primes.」。

資料範圍

1≤l輸入樣例:

2 17

14 17

輸出樣例:

2,3 are closest, 7,11 are most distant.

there are no adjacent primes.

#include

#include

#include

using namespace std;

const

int n =

1000010

, m =

50010

;int primes[n]

, cnt;

bool st[n]

;void

get_primes

(int n)

//線性篩法 求1-n所有質數}}

intmain()

cnt =0;

for(

int i =

0; i <= r - l; i ++)if

(!st[i]

&& i + l >1)

primes[cnt ++

]= i + l;

// for(int i = 0; i < cnt; i++) cout << primes[i] << ' ';

// cout << endl;

if(cnt <2)

puts

("there are no adjacent primes.");

else

//找相鄰質數最小值

printf

("%d,%d are closest, %d,%d are most distant.\n"

, primes[minp]

, primes[minp +1]

, primes[maxp]

, primes[maxp +1]

);}}

return0;

}

給定整數 n ,試把階乘 n! 分解質因數,按照算術基本定理的形式輸出分解結果中的 pi 和 ci即可。

輸入格式

乙個整數n。

輸出格式

n! 分解質因數後的結果,共若干行,每行一對pi,ci,表示含有pcii項。按照pi從小到大的順序輸出。

資料範圍

1≤n≤10^6

輸入樣例:

5輸出樣例:

2 33 1

5 1樣例解釋

5!=120=2^335

#include

using namespace std;

const

int n =

1000010

;int primes[n]

, cnt;

bool st[n]

;void

get_primes

(int n)}}

intmain()

return0;

}

《演算法競賽高階指南》 防曬

有c頭奶牛進行日光浴,第i頭奶牛需要minspf i 到maxspf i 單位強度之間的陽光。每頭奶牛在日光浴前必須塗防曬霜,防曬霜有l種,塗上第i種之後,身體接收到的陽光強度就會穩定為spf i 第i種防曬霜有cover i 瓶。求最多可以滿足多少頭奶牛進行日光浴。輸入格式 第一行輸入整數c和l。...

《演算法競賽高階指南》蚯蚓

蛐蛐國最近蚯蚓成災了!隔壁跳蚤國的跳蚤也拿蚯蚓們沒辦法,蛐蛐國王只好去請神刀手來幫他們消滅蚯蚓。蛐蛐國裡現在共有 n 只蚯蚓,第 i 只蚯蚓的長度為 ai 所有蚯蚓的長度都是非負整數,即可能存在長度為0的蚯蚓。每一秒,神刀手會在所有的蚯蚓中,準確地找到最長的那乙隻,將其切成兩段。若有多隻最長的,則任...

演算法競賽高階指南筆記

原碼 原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值.比如如果是8位二進位制 其中,第一位為1是負數 1 0000 0001 原 1 1000 0001 原 因此,8位二進位制數的取值範圍 127,127 補碼正數的補碼是其本身 負數的補碼是在其原碼的基礎上,符號位不變,其餘各位取...