A

关注点放在序列中出现不同个数最多会有多少个

题干中关键信息

显然会发现 1 、 2 、 3 、 4 、…… 、k

( + )/2

预处理出不同元素及个数暴力统计贡献就好

#include <bits/stdc++.h>

using namespace std ;

using i64 = long long ;
const int p = 998244353 ;
const int N = 1e6 + 10 ; 

int n ; 

int gcd(int a,int b) {
	return b ? gcd(b , a  % b) : a ;
}

void solve()
{
	cin >> n ;
    unordered_map<i64 , i64> mp ;
	for(int i = 1 ; i <= n ; i++) {
        int x ; 
        cin >> x ;
        ++mp[x] ; 
    }
	i64 ret = 0 ;
    for(auto a : mp)
    {
        for(auto b : mp)
        {
        	ret = (ret + a.second * b.second * gcd(a.first , b.first) % p * (__builtin_popcount(a.first) + __builtin_popcount(b.first) ) % p) % p;
        }
    }
    
    cout << ret ; 
}

int main()
{
	ios::sync_with_stdio(false) ; cin.tie(0) ; cout.tie(0) ;

	int t = 1 ;
	// cin >> t ;

	while (t--)
	{
		solve() ; 
	}
	return 0 ; 
}