Problem
1, 2, 4, 7, 10, 15, 19, 26, 31, 37, 43, 54, 60, 73
A027384 Number of distinct products ij with 0 <= i, j <= n.
詢問 0 到 N 的連續整數,任兩個挑出來相乘,有多少不同的整數。
Sample Input
|
|
Sample Output
|
|
Solution
聽說當下比賽很多人直接本地建表,不過這一題還真的不知道該怎麼解比較好。
用了窮舉的方式,加入第 i 個整數,將與 0 ~ i 相乘,這時候增加多少不同整數?
- 找到
i * j == p * q
其中滿足p, q < i
,要忽略所有可能的 j,剩餘的結果就是增加的數量。 - 假設
i = a * b, p = a * ?1, q = b * ?2
。 - 得到
j = ?1 * ?2
、?2 < a, ?1 < b
。
用嚴格增加的趨勢,依序窮舉 i 的因數 a (小到大),?2
可以帶入的數字會遞增,而 ?1
會遞減,而中間會有一段重複的窮舉,只考慮 ?2
進行遞增即可。將不好的 j 給篩掉。
|
|