探索合數世紀題解

2022-01-16 18:22:59 字數 1077 閱讀 3871

問題描述

若乙個世紀的100年號中不存在乙個素數,則稱這個世紀為合數世紀。求第n個合數世紀(公元0年起始)。

輸入描述

輸入n,為整數

輸出描述

輸出合數世紀起始與結束年份,用空格隔開

樣例輸入

樣例輸出
1671800 1671899

這道題是一道遍歷題,遍歷0-99,沒有合數世紀就累加100,訣竅在於如何讓**的效率更好。

我首先想到的是,用for迴圈對0到99進行素數判斷,只要有乙個素數就認為這個世紀不行,判斷素數我用的**如下

1

int judge(intn)2

8return1;

9 }

於是問題出現了,判斷素數的**上面這個已經是我能想到的效率最快的乙個了,但還是不行,時間複雜度約為為o(n/2),隨著n越大,迴圈次數越多,時間用得也越多,也就導致了,第乙個合數世紀超過三秒還是判斷不出來,我們以1秒的標準要求自己。

查了一下資料,我發現了乙個時間複雜度更低的演算法。

我原先是打算判斷是不是素數,而我現在我打算判斷是不是合數,**如下

1

int judge(intn)2

8return0;

9 }

很巧妙的乙個判斷是否是合數,時間複雜度為最大為o(n^0.5

),遠遠小於o(n/2)。

於是,我用這個演算法打造了乙個程式,如下

1 #include 2

using

namespace

std;34

int judgecompos(int n) //

在n~n+99之內進行素數累加516

}17}18

if(count==50) return1;

19else

return0;

20}2122

intmain()

2332

if(n==begin)

3337}38

return0;

39 }

題解 星系探索

題目傳送門 給出乙個 n 個點的樹,每個點有點權,有 m 次操作,分別為以下操作 n le 100000,m le 300000 保證答案在 text 範圍以內。這似乎是個假的 text 似乎真的 text 是用尤拉迴路做的,但是它並不能維護鏈的資訊,但可以支援換根。雖然還是沒有 text 強 儘管...

題解 Hikari與組合數

tairitsu 給 hikari 出了乙個組合數的題 求出 begin sum xc i c 998244353 end hikari稍微想了想這不是個傻叉的楊輝三角嗎,但她看到資料範圍後就更懵逼了,於是她來尋求你的幫助。第一行乙個整數 t 表示資料組數。接下來 t 行,每行分別有三個整數 x y...

交流 題解(容斥原理 組合數)

在此。給你n nn個字串,其中選擇k kk個,如果合法則將 變成字元 26 2626 個都可以,前提是合法 構成乙個只含小寫字母的字串,求可以變成多少種字串。合法要求 乙個位置上要不只有一種小寫字母,要不是 解法 可以用狀壓dpdp dp或者容斥原理 組合數完成。首先鋪墊三個內容 交集 並集 集合大...