#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std;
inline void read(int& x)
{
char c = getchar();x = 0;bool flag = false;
while(c<'0'||c>'9')c=='-'?flag=true:1,c=getchar();
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
flag?x=-x:1;
}
#define mod 999983
int n;char s[15];typedef long long LL;
LL dp[1010][10010],ans = 0,S1,S2;
int main(void)
{
#define ACK
#ifdef ACK
freopen("num.in","r",stdin);
freopen("num.out","w",stdout);
#endif
read(n);gets(s+1);
int len = strlen(s+1);
dp[0][0] = 1;
for(int i=0;i<n;i++)for(int j=0;j<=9*n;j++)
{if(!dp[i][j])continue; for(int k=1;k<=len;k++)dp[i+1][j+s[k]-'0']=(dp[i+1][j+s[k]-'0']+dp[i][j]
数字 【DP+容斥】
最新推荐文章于 2025-02-20 22:49:29 发布