給定區間[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個箱子都在,但是經過一段混亂的搬運已經亂掉了。最後大家發現這樣混亂地搬運過程效率太低了,於是總結出了提高效率的方法。大家的速度都是每分鐘上 或下 一層樓。所有向上走的人手中都拿乙個箱子,所有向下走的人手中都不拿...