字首和計算可以減少時間複雜度,提高執行速度
對於求每一項均是前幾項總和的情況下的部分幾項和或者某一單項的時候使用
一般寫成ans[i]=ans[i-1]+a[i];
eof即是end of file的縮寫
=eof表示檔案結尾,「!=eof」表示檔案還沒有結束。
用於多組(不定組)資料輸入時
如 while(scanf()!=eof);
雜湊即定義乙個陣列來為函式中的資料進行標記
可以用來記錄某資料出現的次數
素數打錶即是運用雜湊的一種形式
意思是對於部分整數將其中所有的非素數全部標記出來
反覆篩選 最後剩餘的未被標記的數字即為素數
相比起一般輸入整數判斷是否為素數,其時間複雜度更低
例如:輸入若干個數字b(1<=b<=10000) 判斷其是不是素數
#includeint main()
,i,j,b;
for(i=1;i<=10000;i++)
for(j=i*i;j<10000;j+=i)
a[j]=1;
while(scanf("%d",&b)!=eof)
return 0;
}
解析:
先給陣列a賦值為0,然後利用迴圈找出是i倍數的數字進行標記,被標記的數字即為非素數。
然後輸入數字b,判斷a[b]是否被標記,若未被標記,則說明b不是某數倍數,即b的因子只有1和b,那麼b就是素數。
老陳的集訓隊 LCM(第一周)
一組正整數的最小公倍數 lcm 是一組正整數中最小的能被該組中所有數整除的正整數。例如,5 7和15的lcm是105。輸入輸入將由多個問題例項組成。輸入的第一行將包含乙個整數,該整數指示問題例項的數量。每個例項將由m個n1 n2 n3形式的一行組成 其中m是集合中整數的個數,整數。所有整數都是正的,...
acm初學的第一周
萬能標頭檔案 include stl的簡單應用 一.string 字串型別 標頭檔案 是表示可變長度的字串行 一定程度上可以替代字元陣列,簡化字元陣列的繁瑣。輸入輸出的應用 string s cin s cout 2.通過s n 可以逐個輸出字元 3.s.size 返回字串的個數 s.empty s...
2019暑期集訓第一周小結
特點 一輪搜尋完成後,清空標記陣列的問題 在搜尋的過程中,需要借助標記陣列,來防止重複的訪問。之前採取的方法是,通過標記為1,表示該值被訪問過。但是這樣做不適合多輪的搜尋,因為每輪搜尋結束後,都需要重新把標記陣列清零。解決 每輪搜尋都設定乙個唯一的值 不再侷限於1和0 標記陣列的本質是通過設定不同的...