題目大意:給你乙個數n,問你從0開始到n,有多少對u,v 其中u,v滿足,a^b=v&&a+b=u
思路:其實可以看得出,a^b<=a+b當且僅當a和b是那種二進位制位數的1正好錯開的情況,**:還有是因為a xor b = a+b-2(a and b)<=a+b,那麼我們就只需要考慮到n>=a+b的情況了,
二進位制下a和b的最低位,記a=2a1+a2,b=2b1+b2,其中a2,b2=0,1且a2<=b2,
得到方程:a1+b1<=(n-a2-b2)/2,因為a2+b2只能是0,1,2,則有dp[i]=dp[i/2]+dp[(i-1)/2]+dp[(i-2)/2]
#include#include#include#include#include#define ll long long
using namespace std;
mapdp;
const ll mod=1e9+7;
ll solve(ll n)
int main()
return 0;
}
異或 異或相關
感謝 morning glory 贊助 異或異 或 de scri ptio ndes crip tion 給定 l,r l,r,求 i lr j lr i ji l r j l r i jl,r 1 09l,r 1 09 s olut ions olut ion 假設l 1,r 4l 1,r 4,...
異或運算 有趣的異或運算
異或運算可以看做是沒有進製的加法,按位異或運算,相同為0,不同為1。0 0 0 0 1 1 1 0 1 1 1 0 觀察運算結果我們發現,當與0做異或運算時,另一元值不變 而與1做異或運算時,另一元值值取反。根據以上異或運算的特徵,可以有以下用途,除方便直觀外,運算效能也更加優異。1 變數重置0 假...
異或和之和 異或問題
題目 有n個數,任選3個進行異或,求出所有三元組的異或和的和 普通計算是 o n 3 但是發現,對於異或的運算,就轉換為二進位制的運算,把每乙個陣列轉換為二進位制,再拆分,當且僅當 1 1 1 和 1 0 0 時,答案才為1,否則都是0,也就是說,只有這兩個情況是由貢獻的 把每個數位化為二進位制,然...