問題 C 數對

2021-09-28 12:32:42 字數 1030 閱讀 6917

題目描述

兩個整數a,b,如果他們某⼀數字相同了,那麼(a,b)就是⼀組合法的數對(沒有順序),現在給定了n個整數,問存在多少對合法的數對呢?

輸入

第⼀⾏,⼀個整數n。

接下來n⾏,每⾏⼀個正整數。

輸出

輸出⼀個整數,表示合法數對個數。

樣例輸入

複製樣例資料312

12樣例輸出

2

提示

對於100%的資料,n≤1000000,每個正整數≤1018。

題解:對於乙個數來說存在幾個1和存在1個1,對答案的貢獻都是一樣的。

我們可以把正整數看數**現了哪些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...