1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| class Solution { public: static const int MOD = 1e9+7; int sumOfFlooredPairs(vector<int>& nums) { int N = nums[0]; for(auto a: nums) N = max(N, a); vector<int> h(N+1);
int ans = 0; int sum = 0; for(auto a: nums) h[a]++;
for(int i=1;i<=N;i++) { h[i] += h[i-1]; }
for(int i=1;i<=N;i++) { for(int j=i,k=1; j<=N; j+=i,k++) { ans += 1LL*k*(h[i]-h[i-1])%MOD*(h[min(N, j+i-1)]-h[j-1])%MOD; ans %= MOD; } } return ans; } };
|