牛客 - 做计数(数学)
生活随笔
收集整理的這篇文章主要介紹了
牛客 - 做计数(数学)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:點擊查看
題目大意:給出一個正整數 n ,求滿足條件 ( i , j , k ) 的三元組的數量,其中需要滿足:
n 的范圍是 4e7
題目分析:比賽的時候只想到了nsqrt(n)的枚舉方案,還是怪我太弱了,其實先要對原式進行化簡,兩邊同時平方得到:
這樣一來只需要枚舉 i * j就好了,滿足 i?* j 為完全平方數,且 i 和 j 都是正整數,可以兩層循環解決,外面一層枚舉每個完全平方數,時間復雜度為 sqrt( n ),內部的循環枚舉每個完全平方數的因子個數,時間復雜度同為 sqrt( n ),套起來就是O(n)了,因為(i,j,k)和(j,i,k)為兩種答案,所以每次遇到可以整除的因子時貢獻累加 2 ,最后別忘了特判一下 i == j 的情況就好了
代碼:
?
?
總結
以上是生活随笔為你收集整理的牛客 - 做计数(数学)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HihoCoder - 1465 后缀自
- 下一篇: 牛客 - 拿物品(贪心)