作者:
Unkillable
,
2023-05-26 18:36:20
,
所有人可见
,
阅读 11
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 1050;
const int M = 1e5 + 50;
const int mod = 1e9 + 7;
int n;
int a[N];
int f[N];
vector<int> q[M];
bool st[M];
int main()
{
for(int i = 1; i < M; i++)
for(int j = i * 2; j < M; j += i)
q[j].push_back(i);
scanf("%d", &n);
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
f[0] = 1;
for(int i = 1; i < n; i++)
{
memset(st, 0, sizeof st);
for(int j = i - 1; j >= 0; j--)
{
int d = a[i] - a[j], cnt = 0;
for(auto k : q[d])
{
if(!st[k])
{
cnt++;
st[k] = true;
}
}
st[d] = true;
f[i] = (f[i] + (LL)f[j] * cnt) % mod;
}
}
printf("%d", f[n - 1]);
return 0;
}