[ABC262D] I Hate Non-integer Number

· · 题解

思路:

考虑动态规划。

由思路可得不选状态转移方程为 $f_{i,j,k}=f_{i+1,j,k}$,选的状态转移方程为 $f_{i,j,k}=f_{i+1,j+1,(k+a_{j})\mod k}$。 # CODE: ```cpp #include<bits/stdc++.h> #define ll long long #define ld long double #define rep(i,l,r) for(register ll i=(l);i<=(r);i++) #define PLL pair<ll,ll> #define PLD pair<ld,ld> #define FI first #define SC second #define MP make_pair using namespace std; const ll INF=9223372036854775807; const ld ERR=1e-12; const ll N=109,MOD=998244353; ll n,a[N],f[N][N][N],ans; int main(){ cin>>n; rep(i,1,n)cin>>a[i]; rep(i,1,n){ memset(f,0,sizeof(f)); f[1][0][0]=1; rep(j,1,n)rep(k,0,i)rep(l,0,i-1){ f[j+1][k][l]+=f[j][k][l]; f[j+1][k][l]%=MOD; if(k!=i)f[j+1][k+1][(l+a[j])%i]+=f[j][k][l],f[j+1][k+1][(l+a[j])%i]%=MOD; } ans=(ans+f[n+1][i][0])%MOD; } cout<<ans<<endl; return 0; } ```