http://codeforces.com/problemset/problem/300/C

 

 

长度为n的数字每一位只含a和b,那么这个数字是好的,如果这个数字的每一位加起来的和是一个好的数字,那么该数字被称为极好的。

总共n位,假设数字有x位a,那么要有(n-x)位b,才是好的数字,然后算出来和,如果每一位都是a,b,那么答案加上C(n,x).

x∈[0,n].

 

 

#include<bits/stdc++.h>
using namespace std;
#define mod 1000000007
#define ll long long

ll a,b,n,ans;
ll c[1000000+10];

ll pow_mod(ll a,ll n,ll m)
{
	if(n==0)return 1;
	ll x=pow_mod(a,n/2,m);
	x=x*x%mod;
	if(n&1)x=x*a%mod;
	return x;
}

void init()
{
	c[0]=1;
	for(int i=1;i<=n;i++)c[i]=c[i-1]*(n-i+1)%mod*pow_mod(i,mod-2,mod)%mod;
}

int main()
{
	cin>>a>>b>>n;
	init();
	for(int x=0;x<=n;x++)
	{
		ll num=a*x+(n-x)*b;
		bool ok=1;
		for(;num;num/=10)if(num%10!=a&&num%10!=b)ok=0;
		if(ok)ans=(ans+c[x])%mod; 
	} 
	cout<<ans<<endl;
	return 0;
}