Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34576 masppy 【S】T1 C++ 解答错误 40 11 MS 25920 KB 1740 2024-11-10 21:10:10

Tests(4/10):


#include<bits/stdc++.h> #define ll long long #define lson pos<<1 #define rson pos<<1|1 using namespace std; const int maxn=2e5+10; const ll mod=1e9+7; const ll inf=1e10; ll n,m,k,t,ans=0; ll a[maxn],vis[20][5],C[20][20],A[20][20],f[maxn][20]; char c[maxn],s[maxn]; int main(){ // freopen("test.in","r",stdin); // freopen("math.out","w",stdout); scanf("%lld",&n); scanf("%s",c+1); scanf("%s",s+1); scanf("%lld",&m); f[0][0]=1; for(int i=1;i<=n;i++){ for(ll j=1;j<=min(10,i);j++){ f[i][j]=f[i-1][j-1]+f[i-1][j]*j; } } C[0][0]=1ll; A[0][0]=1ll; for(ll i=1;i<=10;i++){ C[i][0]=1ll; A[i][0]=1ll; for(ll j=1;j<=i;j++){ C[i][j]=C[i-1][j]+C[i-1][j-1]; A[i][j]=A[i][j-1]*(i-j+1ll); } } memset(vis,0,sizeof(vis)); int cnt=0,cnt1=0; bool fg=0; for(int i=1;i<=n;i++){ if(i==1){ ans=(s[i]-c[i])*C[9][m-1]*(((f[n-1][m]*A[m][m])+f[n-1][m-1]*A[m-1][m-1])%mod)%mod; } else{ for(int j=0;j<s[i]-'0'&&cnt<=m;j++){ int tmp=cnt+(!vis[j][0]); // cout<<vis[j][0]<<" "<<cnt<<endl; if(tmp>m) continue; for(int k=0;k<=tmp;k++){ // cout<<C[10-tmp][m-tmp]<<" "<<f[n-i][m-k]<<" "<<k<<" "<<j<<endl; ans=(ans+C[10-tmp][m-tmp]*f[n-i][m-k]*A[m-k][m-tmp]%mod*A[tmp][tmp-k]%mod)%mod; } } for(int j=0;j<c[i]-'0'&&cnt1<=m;j++){ int tmp=cnt1+(!vis[j][1]); if(tmp>m) continue; for(int k=0;k<=tmp;k++){ ans=(ans-C[10-tmp][m-tmp]*f[n-i][m-k]*A[m-k][m-tmp]%mod*A[tmp][tmp-k]%mod+mod)%mod; } } } if(!vis[s[i]-'0'][0]) vis[s[i]-'0'][0]=1,cnt++; if(!vis[c[i]-'0'][1]) vis[c[i]-'0'][1]=1,cnt1++; } if(cnt==m) ans++; printf("%lld",ans); fclose(stdin); fclose(stdout); return 0; }


测评信息: