生活随笔
收集整理的這篇文章主要介紹了
xay loves count 枚举-复杂度-顺序无关-选择
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意 :
- 給出一個長為n的數組,求有多少對(i ,j ,k)滿足 ai * aj == ak,n < 1e6,下標沒有順序。
思路 :
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <unordered_map>
#define endl '\n'
using namespace std
;typedef long long LL
;const int N
= 1e6 + 10;int a
[N
];int main()
{ios
::sync_with_stdio(false); cin
.tie(0); cout
.tie(0);int n
;cin
>> n
;for (int i
= 0; i
< n
; i
++ ){int x
;cin
>> x
;a
[x
] ++ ;}LL ans
= 0;for (int i
= 1; i
<= 1000000; i
++ )for (int j
= 1; j
<= 1000000 / i
; j
++ )ans
+= a
[i
] * a
[j
] * a
[i
* j
];cout
<< ans
<< endl
;return 0;
}
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <unordered_map>
#include <unordered_set>
#include <set>
#define endl '\n'
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
using namespace std
;
typedef long long LL
;
const int N
= 1e6 + 10;int a
[N
];int main()
{IOS
;int n
;cin
>> n
;set
<int> se
;for (int i
= 0; i
< n
; i
++ ){int x
;cin
>> x
;se
.insert(x
);a
[x
] ++ ;}LL ans
= 0;for (auto i
: se
){for (int j
= i
; j
<= 1000000 / i
; j
++ )if (a
[j
])if (i
!= j
)ans
+= a
[i
] * a
[j
] * a
[i
* j
] * 2;elseans
+= a
[i
] * a
[j
] * a
[i
* j
];}cout
<< ans
<< endl
;return 0;
}
與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的xay loves count 枚举-复杂度-顺序无关-选择的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。