UVA 12716 GCD XOR 【數論】【素數】【暴力枚舉】

題目大意

傳送門

輸入整數n,有多少對整數(a,b)滿足:1<=b<=a<=n,且gcd(a,b)=aXORb

例如:
n=7,有4對:

(3,2)
(5,4)
(6,4)
(7,6)

思路

要滿足的條件爲:gcd(a,b)=aXORb

  • gcd(a,b)=c 則,a是c的倍數。
  • c=aXORbb=aXORc

枚舉a和c,因爲a是c的倍數。複雜度是O(nlog(n))

然後算出b=aXORc,最後驗證是否有gcd(a,b)=c 複雜度爲O(logn)

總體複雜度爲O(n(logn)2)

通過答案得到c = a-b
證明如下:
- 通過gcd性質:a-b >= c
- 通過XOR性質:a-b <= a xor b

可得到c=a-b.


# Hit

若a xor b = c
則a xor c = b
“`

發佈了137 篇原創文章 · 獲贊 22 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章