容易發現判斷乙個數是否合法是o(
n−−√
) 的,而且每個數都可以單獨做,因此可以分塊打表。 每n
−−√ 個數求一下答案,詢問直接o(
n)做即可。
適當調整打表的間隔能讓計算的次數減少。
//分塊打表
#include
#include
#include
#define block 150000
#define maxn 300000001
#define lim 100000
using
namespace
std;
int biao[2017]=
;int prime[30000000], a, b;
bool mark[lim];
inline
bool fang(int x)
void init()
}}inline
bool judge(int x)
int solve(int x)
int main()
bzoj 3798 特殊的質數(分塊打表)
time limit 50 sec memory limit 128 mb submit 239 solved 119 submit status discuss 求 a,b 之間的質數個數,並且滿足x q 2 p 2,p,q是正整數。第一行輸入a,b 輸出有多少組p,q滿足條件 6 667 預處理...
BZOJ3798 特殊的質數 分塊打表
求 a,b 之間的質數個數,並且滿足x q 2 p 2,p,q是正整數。第一行輸入a,b 輸出有多少組p,q滿足條件 6 66 71 a b 3 10 8 題解 還有什麼比表打錯了更讓人欲哭無淚的 注意一下幾點 1.分塊不能太小,10 5很穩,再小有可能裝不下了 2.2 1 1 1 1,也算 3.不...
DFS 特殊的質數肋骨
時間限制 1000ms 記憶體限制 256000kb 題目描述 農民約翰母牛總是產生最好的肋骨。你能通過農民約翰和美國農業部標記在每根肋骨上的數字認出它們。農民約翰確定他賣給買方的是真正的質數肋骨,是因為從右邊開始切下肋骨,每次還剩下的肋骨上的數字都組成乙個質數,舉例來說 7 3 3 1 全部肋骨上...