题目链接:http://codeforces.com/problemset/problem/963/A
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+9;
ll qpow(ll x,ll y)
{
ll ans=1;
x%=mod;
while(y){
if(y&1)
ans=ans*x%mod;
x=x*x%mod;
y>>=1;
}
return ans;
}
ll inv;
ll n,a,b,k;
ll ans=0;
ll zhouqi=1,zhouqisum=1;
char s[100005];
ll qujianhe(ll n)
{
if(zhouqisum==1)
return n+1;
return (qpow(zhouqisum,n+1)-1+mod)%mod*inv%mod;
}
int main()
{
scanf("%lld%lld%lld%lld",&n,&a,&b,&k);
scanf("%s",&s);
if(a!=b)
zhouqi=b*qpow(a,mod-2)%mod;
zhouqisum=qpow(zhouqi,k);
if(zhouqisum!=1)
inv=qpow(zhouqisum-1,mod-2);
for(int i=0;i<min(n+1,k);i++)
{
ll tmp=1;
if(s[i]=='-')
tmp=-1;
ans=((ans+tmp*qujianhe((n-i)/k)*qpow(zhouqi,i)%mod)%mod+mod)%mod;
}
ans=(ans*qpow(a,n)%mod+mod)%mod;
cout<<ans<<endl;
return 0;
}
参考:https://blog.youkuaiyun.com/feifancaicai/article/details/79983327
我一定可以的!!!