题解分享
题解分享简介
等差 - 题解
```cpp
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define Linf 0x3f3f3f3f3f3f3f3f
using namespace std;
const int N = 5e5+2, M = 102, mod = 1e9+7;
void add(int &a, int b) {
if(a + b >= mod) a = a + b - mod;
else if(a + b < 0) a = a + b + mod;
else a = a + b;
}
int n, a[N];
int f[M];
int ans;
signed main() {
cin >> n;
for(int i = 1; i <= n; ++i) scanf("%d", &a[i]);
for(int d = -100; d <= 100; ++d) {
memset(f, 0, sizeof(f));
for(int i = 1; i <= n; ++i) {
int val = a[i] - d;
if(val >= 0 && val <= 100) add(f[a[i]], f[val]);
add(f[a[i]], 1);
}
for(int i = 0; i <= 100; ++i) add(ans, f[i]);
if(d != 0) add(ans, -n);
}
cout << ans;
return 0;
}
```
查看全文
0
0
1
2



