b<=100000000
n = b**0.5
nlist:標記0~n是否為質數
plist:質數清單
輸入a,b
ablist:標示是否為質數,逐一利用plist檢查a…b是否為質數
ans = sum(ablist)
AC (8.3s, 3.5MB)
n=10000
nlist = [0,0,1]
for i in range(n//2+1):
nlist += [1,0]
plist = [2]
for i in range(3,n,2):
if nlist[i]:
plist.append(i)
for pi in plist:
if pi*i>n: break
nlist[pi*i] = 0
if i % pi ==0: break
while True:
try:
a,b = map(int,input().split())
if a==1: a=2
if a>b:
ans = 0
else:
ablist = [1]*(b-a+1)
for x in range(a,b+1):
for p in plist:
if p > x**0.5:break
if x % p == 0:
ablist[x-a] = 0
break
ans = sum(ablist)
print(ans)
except EOFError:
break
ZJ 693 先處理儲存前綴和,可以快速查表算出區間和 code #include <iostream> using namespace std; int main() { int n,m; while (cin >> n >> m) {
Sep 5, 2022ZJ d120 nlist:標記0~n,是否為質數 plist:質數清單 思考流程圖 graph TD; 建立0-n的質數表plist及nlist-->處理輸入值=nt=ni; 處理輸入值=nt=ni-->由nlist判斷-->nt非質數-->逐一plist因式分解ans+1-->輸出結果; 由nlist判斷-->nt為質數-->ans=1-->輸出結果;
Aug 28, 2022ZJ f816 說明: nx[]: 動態存放熱門度還未歸0的清單排序大到小清單 利用python內建bisect.insort(nx,value)將value插入nx只能小到大排序,所以把value加上負號存放,取值時再加上負號反正 total_reduce:累積的討論下降度 total_live:累積熱門度 v,d = 第i天的討論度,下降度
Aug 25, 2022ZJ f815 nlist:(1<=ni<=10^7)代表n個士兵目前的等級 nlist.sort()排序後,用第一次二分搜找最小nlist[lft=rgt]滿足cost>c 若第一次二分搜沒找到剛好已知的ni滿足cost=c的升級點,則須再利用找到的位置區間(lft-1,rgt)進行第二次二分搜 或最大的ni仍無法滿足cost>c,則從最大ni逐一+1找 仍是檢查最小cost>c的位置,然後ans = 該位置-1 code AC (55ms, 5.7MB)
Aug 24, 2022or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up