BZOJ3798 特殊的質數 分塊打表

2022-05-20 18:36:01 字數 601 閱讀 9867

求[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.不要把x=i*i+0*0這樣的算上

4.先開乙個陣列n2[i]=i*i比每次都計算i*i要快很多~(%popoqqq大爺的做法)

5.sqrt太慢了,用雙指標法才能o(√n)判斷x是不是兩數平方的和

#include #include #include #include using namespace std;

int ans;

int s=;

int n2[20010];

bool sqr(int x)

return false;

}bool pri(int x)

int calc(int n)

int main()

bzoj3798 特殊的質數

容易發現判斷乙個數是否合法是o n 的,而且每個數都可以單獨做,因此可以分塊打表。每n 個數求一下答案,詢問直接o n 做即可。適當調整打表的間隔能讓計算的次數減少。分塊打表 include include include define block 150000 define maxn 300000...

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 預處理...

DFS 特殊的質數肋骨

時間限制 1000ms 記憶體限制 256000kb 題目描述 農民約翰母牛總是產生最好的肋骨。你能通過農民約翰和美國農業部標記在每根肋骨上的數字認出它們。農民約翰確定他賣給買方的是真正的質數肋骨,是因為從右邊開始切下肋骨,每次還剩下的肋骨上的數字都組成乙個質數,舉例來說 7 3 3 1 全部肋骨上...