我的思路是枚举公差,然后有点类似背包
然鹅第一个样例都没过,输出是33
应该是我的思路有问题吧QWQ
但我想了好久觉得没问题啊((
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=998244353;
ll n,ans;
ll a[1003],p[20500],vis[20005];
void clear(){
for(int i=1;i<=n;i++) {
p[a[i]]=0;
vis[a[i]]=0;
}
}
int main(){
scanf("%lld",&n);
ans=n;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=20005;i++){//公差
ll x=i;
clear();
//if(i<=35) cout<<i<<" ";
for(int j=1;j<=n;j++){//找是否前面是否出现过符合公差的数
ll v=a[j];
if(v-x>=0){
ans=(ans+p[v-x])%mod,p[v]+=p[v-x]+1;
}
//if(i<=35) cout<<ans<<" ";
}
clear();
for(int j=1;j<=n;j++){
ll v=a[j];
if(v+x>=0&&v+x<=25005) ans=(ans+p[v+x])%mod,p[v]+=p[v+x]+1;
//if(i<=35) cout<<ans<<" ";
}
//if(i<=35) cout<<"\n";
}
printf("%lld",ans);
return 0;
}