Codeforces 300C Beautiful Numbers 乘法逆元

题目链接:http://codeforces.com/contest/300/problem/C

题意:

题意忘了。

总之暴力枚举x

乘法逆元:

在mod==prime时(mod为素数)则存在以下等式

(a / b)%mod  =  a * (b^(mod-2))

#include <iostream>
#include <cstdio>
using namespace std;
#define ll __int64
ll a,b,n,f[1000010],Mod=1000000007,res;
ll Pow(ll x ,ll p){
    ll ans = 1;
	while(p){
		if(p&1)ans = (ans*x)%Mod;
		p>>=1;
		x = (x*x)%Mod;
	}
	return ans;
}
bool Good(ll x){
    while(x!=0){
        if( (x%10)!=a && (x%10)!=b ) return 0;
        x/=10;
    }
    return 1;
}
int main()
{
    scanf("%I64d %I64d %I64d",&a,&b,&n);
    f[0]=1;
    for(ll i=1;i<=n;i++)
        f[i]=(f[i-1]*i)%Mod;
    for(ll i=0;i<=n;i++)
    {
        ll sum =  ( (a*i)+(b*(n-i)) )%Mod;
        if(Good(sum)==1)
        {
            ll z=(f[n-i]*f[i])%Mod;

			res= ( res+(f[n]*(Pow(z,Mod-2)%Mod)) ) %Mod;
        }
    }
    printf("%I64d",res%Mod);
    return 0;
}


你可能感兴趣的:(Codeforces 300C Beautiful Numbers 乘法逆元)