素數密度 NOI導刊2011提高(04)

2022-05-12 12:41:31 字數 922 閱讀 4852

給定區間[l, r](l <= r <= 2147483647,r-l <= 1000000),請計算區間中素數的個數。

輸入兩個數 l 和 r。

輸出一行,區間中素數的個數。

樣例輸入

2 11

樣例輸出

5可以發現r - l範圍很小,但l和r很大,用普通的篩法時空間都會超。

但可以轉換思路,只篩l ~ r的素數。

此前先篩出2-√r的素數,只有大約47000個

將這些素數在l ~ r裡的倍數篩掉,注意別把素數本身篩掉

比如樣例:2~11,會把2,3篩掉。如果沒有注意的話小資料會過不了(大的可以過,親測只有樣例不行)

#include#include

#include

#include

#include

using

namespace

std;

long

long

l,r;

intk;

int prime[4000001

];int vis[4000001

];int

ans;

intmain()

for (i=2;i<=sqrt(r);i++)

if (vis[i]==0

)

memset(vis,

0,sizeof

(vis));

for (i=1;i<=k;i++)

for (i=l;i<=r;i++)

if (vis[i-l]==0

)

cout

<}

速算遊戲 NOI導刊2011提高(04)

這道題會做到懷疑人生,好了廢話不多說,我們發現這道題是一道深搜。但是字典序卻不知道怎麼排,我們發現沒算乙個運算子就會填加乙個括號,所以我們用乙個char變數貯儲字典序最小的東西。include includetypedef char string 20 int a 4 b 4 ans 4 2 str...

公共子串行 NOI導刊2011提高(03)題

題面 這道題有點坑人啊 首先,它需要取模,模數是100000000 窩在這裡死了好久好久,看了別人的 才發現這一點 然後我發現題解中沒有序列自動機的方法,於是就來一發 首先,雖然序列自動機在定義上與字尾自動機 回文自動機等聽起來比較高大上的演算法同屬於自動機的範疇,但它僅僅是個 普及 演算法 為何?...

小明搬家 NOI導刊2010提高(05)

小明要搬家了,大家都來幫忙。小明現在住在第n樓,總共k個人要把x個大箱子搬上n樓。最開始x個箱子都在,但是經過一段混亂的搬運已經亂掉了。最後大家發現這樣混亂地搬運過程效率太低了,於是總結出了提高效率的方法。大家的速度都是每分鐘上 或下 一層樓。所有向上走的人手中都拿乙個箱子,所有向下走的人手中都不拿...