Fear Factoring 除法分塊)

2021-08-26 20:21:18 字數 1072 閱讀 5653

借鑑:無法估計他的值時最好用無符號的long long

除法分塊:

區塊值 區塊始末

舉個例子 :12 

次數是有12/n算出來的  像當n==5時 12/5==2,也就是說5出現了兩次

[1]:12次      [2] :6次     [3] : 4次   [4] :3次  

[5]: 2次          [6]:   2次     [7] : 1次   [8]: 1次

[9]: 1次          [10] :1次     [11] :1次   [12] 1 次

left是當前區塊的開始 ,right 是當前區塊的終點

區塊是按出現次數分的,像出現次數為12次 分乙個區塊 ,這個區塊有1個元素 :1

出現次數為6次  分乙個區塊,   這個區塊有1個元素 :2

出現次數為4次 分乙個區塊,   這個區塊有1元素 :   3

出現次數為3次 分乙個區塊 ,   這個區塊有1個元素    4

出現次數為2次 分乙個區塊,   這個區塊有2個元素     5 6

出現次數為1次,分乙個區塊 ,這個區塊有6個元素:7 8 9 10 11 12

可以發現兩個規律:

1: 越小的數分在區塊值大的區塊

2:  同一區塊內的元素是按等差序列分布的。

可以按開始元素小的開始列舉

left是區塊的開始元素,right是區塊的結束元素

n/left 該區塊的值

區塊值也就是區塊內的元素總共出現的次數

#include#includeusing namespace std;

unsigned long long get_sum(unsigned long long n)

return ans;

}int main()

區間內因數和Fear Factoring

大意就是給出乙個區間,求區間內所有數的因數的和 題目 思路,對r求根,然後列舉x 2到根 看區間有多少數字是x的倍數,在這個過程中,如果x的另一半是小於k的 那麼不用管,大於k的就加上 然後列舉區間內各個數字,1和本身,1在之前沒有處理過,要加上。但是本身如果小於k,說明這個本身以前處理過,如果大於...

真除法,floor除法,傳統除法

python3.0 一直執行真除法 eg 4 2 2.0 都帶小數點,和算式中有沒有浮點數無關 python3.0 執行floor除法 一定執行截斷,得到的不是準確值。有浮點型返回浮點型,無浮點型返回int型在python2.6或者之前,對於整數運算會省去小數部分,而對於浮點數運算會保持小數部分在p...

除法 傳統除法 floor和真除法

除法 傳統除法 floor和真除法 有三種型別的除法操作符,其中一種操作符在python 3.0 中有了變化 x y 傳統除法和真除法。在python2.7之前,這個操作對於整數會省去小數部分,對於浮點數會保持小數部分 在python 3.0版本中會變成真除法 無論任何型別都會保持小數部分 x y ...