题目链接: https://vjudge.net/contest/280753#problem/P
题意: 一个数漂亮的定义为若只含两个指定的数字,且这个数所有位数相加所得的数必须只含上面所指定的数字,问一个长度为n的整数有多少种漂亮数
思路: 我们可以设两个数字的数量分别为i, n-i,枚举组成的数字是否符合条件,若符合则数量为
C
n
i
C_{n}^{i}
Cni, 枚举i为0到n
#include<bits/stdc++.h>
#define mod 1000000007
using namespace std;
typedef long long ll;
int a,b,n;
ll f[1000010]={1,1};
bool check(ll x)
{
while(x)
{
ll z=x%10;
if(z!=a&&z!=b)
return false;
x/=10;
}
return true;
}
ll ksm(ll x,ll y)
{
ll ans=1;
x=x%mod;
while(y)
{
if(y%2)
ans=(ans*x)%mod;
y>>=1;
x=x*x%mod;
}
return ans;
}
int main()
{
for(int i=2;i<1000007;i++)
f[i]=i*f[i-1]%mod;
cin>>a>>b>>n;
ll ans=0;
for(int i=0;i<=n;i++)
{
ll sum=i*a+(n-i)*b;
if(check(sum))
{
ll c=f[n-i]*f[i];
ans=(ans+f[n]*ksm(c,mod-2))%mod;
}
}
cout<<ans<<endl;
return 0;
}