質數距離(liuser』s oj)
題目描述
給定兩個整數l,r,求閉區間【l,r】中相鄰兩個質數差值最小的數對與差值最大的數對。當存在多個時,輸出靠前的素數對。
輸入格式
多組資料。每行兩個數l,r。
輸出格式
對於每個l和r ,輸出乙個結果,結果佔一行。
結果包括距離最近的相鄰質數對和距離最遠的相鄰質數對。(詳見樣例1輸出)
如果l和u之間不存在質數對,則輸出「there are no adjacent primes.」。
樣例
樣例1輸入
2
1714
17
樣例1輸出2
,3 are closest,7,
11 are most distant.
there are no adjacent primes.
資料範圍
1<=l由於l和r的範圍很大,所以,直接通過素數篩跑出答案會超時,但是,l和r的區間較小,因此我們可以先通過素數篩跑出2~sqrt(r)的所有素數,對於每個素數a,把【l,r】中所有能被a整除的數(i*a)(合數)標記,所有未被標記的數就是素數,把相鄰的2個素數比較,找出差最小和最大的。–lhy
#include
using
namespace std;
long
long l,r,s[
1000005
],prime[
1000005
],f[
1000005
],cnt=
0,a,b,p,max,min,x,y,x2,y2;
intmain()
for(
long
long j=
1;j*i<
100005
;j++)}
//素數篩,找出素數
while
(scanf
("%lld%lld"
,&l,
&r)!=
eof)
//l==1時注意l要變成2
memset
(f,0
,sizeof
(f))
;for
(long
long i=
0;i} p=-1
; max=-1
; min=
0x3f3f3f3f
;for
(long
long i=
0;i<=r-l;i++)if
(max//差值最大的數對
if(min>i-p)
//差值最小的數對
p=i;}}
if(max==-1
)else
}return0;
}
洛谷2758 編輯距離 題解
字串編輯距離板子題,留乙個底,方便日後。設a和b是兩個字串。我們要用最少的字元操作次數,將字串a轉換為字串b。這裡所說的字元操作共有三種 1 刪除乙個字元 2 插入乙個字元 3 將乙個字元改為另乙個字元 皆為小寫字母!題解網上搜一大堆 其實光看 也都能看懂這道題。include include in...
素數距離題目
好久沒有刷題了,於是去南陽理工的oj上從刷入門題,練練手,題目如下 時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 現在給出你一些數,要求你寫出乙個程式,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。如果輸入的整數本身就是素...
P2136 拉近距離 題解
題目傳送門 可能更好的閱讀體驗 對於乙個有向圖 g 有 n 個點,m 個邊,把每一條邊用三元組 s i,t i,w i 其中 s i,t i 表示兩個端點,w i 表示這條邊的長度。如果這個圖中從點 1 到點 n 的最短路可以無限縮小,請輸出forever love,否則輸出最短路長度。通過資料範圍...