t题意:给出四个整数:A,B,K,C,A,B,C 都是大于 0 的一位数,问在所有仅由 A 或 B 组成的 K 位数中(K 位数的每一位都是 A 或 B),数字 C 的个数有多少。
题解:当A!=C&&B!=C时,直接输出0;当A=B=C时,输出K;
一般情况:代码:
#include<iostream>
typedef long long ll;
const ll mod=1e9+7;
using namespace std;
int A,B,K,C;
ll qpower(ll a,ll b)
{
ll ans=1;
while(b)
{
if(b&1)
ans=(ans*a)%mod;
a=(a*a)%mod;
b>>=1;
}
return ans%mod;
}
ll f(ll x,ll y)
{
ll ans=1;
while(y)
{
ans=(ans*x)%mod;
x--;
y--;
}
return ans%mod;
}
int main( )
{
ll sum=0,cnt=0;
cin>>A>>B>>K>>C;
if(C!=A&&C!=B)
{
cout<<0<<endl;
return 0;
}
else if(A==B)
{
cout<<K<<endl;
return 0;
}
else
{
for(int i=1;i<=K;i++)
{
ll ans=f(K,i);
ll ans2=f(i,i);
sum=(i%mod*ans%mod*qpower(ans2,mod-2)%mod)%mod;
cnt=(cnt+sum)%mod;
}
cout<<cnt<<endl;
}
return 0;
}