題目描述兩個整數a,b,如果他們某⼀數字相同了,那麼(a,b)就是⼀組合法的數對(沒有順序),現在給定了n個整數,問存在多少對合法的數對呢?
輸入第⼀⾏,⼀個整數n。
接下來n⾏,每⾏⼀個正整數。
輸出輸出⼀個整數,表示合法數對個數。
樣例輸入複製樣例資料312
12樣例輸出
2
提示題解:對於乙個數來說存在幾個1和存在1個1,對答案的貢獻都是一樣的。對於100%的資料,n≤1000000,每個正整數≤1018。
我們可以把正整數看數**現了哪些0-9的數字。用二進位制表示,最大的話也就是(1<<10)。然後我們處理好1-1023這些數字出現的次數。
如果a==b的話,對答案的貢獻為n*(n-1)
如果a&b!=0,說明出現了相等的情況。那麼對答案的貢獻為a出現的次數*b出現的次數。
最後答案/2,因為多算了一遍
#include.h>
using namespace std;
const int n
=3005
;typedef long long ll;
ll b[n]
;int main()
//把這些壓制二進位制。
b[p]++;
} ll ans=0;
int m=
1<<10;
for(int i=
1;i<=m;i++
)for
(int j=
1;j<=m;j++)}
printf
("%lld\n"
,ans/2)
;//因為多算了一遍
return0;
}
問題 C 數對
題目描述 兩個整數a,b,如果他們某 數字相同了,那麼 a,b 就是 組合法的數對 沒有順序 現在給定了n個整數,問存在多少對合法的數對呢?輸入第 個整數n。接下來n 每 個正整數。輸出輸出 個整數,表示合法數對個數。樣例輸入 複製樣例資料312 12樣例輸出2提示 對於100 的資料,n 1000...
問題 D 相鄰數對問題
題目描述 給定n個不同的整數,問這些數中有多少對整數,它們的值正好相差1。評測用例規模與約定 1 n 1000,給定的整數為不超過10000的非負整數。輸入 輸入的第一行包含乙個整數n,表示給定整數的個數。第二行包含所給定的n個整數。輸出 輸出乙個整數,表示值正好相差1的數對的個數。樣例輸入 6 1...
18727 數對問題一
description 乙個長度為n的正整數序列,現在需要計算出有多少對數字的差的絕對值為c。注意只要位置不同就認為是不相同的數對。輸入格式 第一行,兩個整數 n,c。1 輸出格式 僅一行,滿足條件的數對的個數。輸入樣例 4 11 2 3 1 輸出樣例3提示 a1,a2 a2,a3 a2,a4 共3...