題目就是要我們求有多少個(a
i,bi
) 滿足ai
xor bi
=2x+
2y(x
!=y)
所以我們可以知道: ai
xor bi
xor 2x
xor 2y
=0我們就將所以ai
xor 2x
放入乙個雜湊表裡面,
然後列舉bi
xor 2y
,在雜湊表裡面找,有多少個與它相同,統計答案。
但是這樣會算重,比如:如果存在某個ai
=bj 那麼就會算重位數次, 還有a
i xor 2x
,bi xor 2y
與 ai
xor 2y
,bi xor 2x
是一樣的。
那我們就強制要求
x<
y ,這樣計算就不會算重了。
我們先列舉位置i,從0到30,將所以aj
xor 2i
−1放入雜湊表裡面,
再用所以的bj
xor 2i
來判斷,這樣就不會算重了。
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define n 100003
#define db double
#define p putchar
#define g getchar
#define mo 23332333
using namespace std;
char ch;
void read(int &n)
void write(int
x)int f[mo],g[mo];
int a[n],b[n],z[33],root[2],tot;
int n,m,x,y;
ll ans;
inline void ins()
inline int find()
int main()
for(int i=1;i<30;i++)
for(int j=1;j<=n;j++)
}//write(ans/2),p('\n');
printf("%lld\n",ans);
}
1105 判斷友好數對(函式專題)
輸入兩個正整數m和n,順序輸出m到n之間的所有友好數對。如果兩個整數的所有正因子之和 包括1,不包括自身 等於對方,就稱這對數是友好的。例如 1184和1210是友好數對,因為 1184的因子之和為1 2 4 8 16 32 37 74 148 296 592 1210 1210的因子之和為1 2 ...
1105 判斷友好數對(函式專題)
輸入兩個正整數m和n,順序輸出m到n之間的所有友好數對。如果兩個整數的所有正因子之和 包括1,不包括自身 等於對方,就稱這對數是友好的。例如 1184和1210是友好數對,因為 1184的因子之和為1 2 4 8 16 32 37 74 148 296 592 1210 1210的因子之和為1 2 ...
NOIP2012模擬10 20 友好數對
description 如果乙個數a 能由乙個數b 旋轉得到,那麼我們稱為友好數對,如12345 和45123 為友好數對,12345 和54321 不為友好數對。給出兩個正整數l,r,求有多少友好數對,滿足 l ainput 第一行乙個整數t,表示資料組數,每組資料兩個正整數l,r。output ...