#include <stdio.h>
#include <string.h>
#include <math.h>
#define mod 1000000007
__int64 pows(__int64 a,__int64 b)
{
__int64 s=1;
while(b){
if(b&1)
s=(s*a)%mod;
a=(a*a)%mod;
b=b>>1;
}
return s;
}
char a[100001];
int main()
{
__int64 k,i,j,n,m,p,q;
//printf("%I64d\n",pows(2,mod));
while(scanf("%s%I64d",a,&k)!=EOF){
m=strlen(a);
n=m*k;
__int64 s=0;
for(i=0;i<m;i++)
{
if(a[i]=='5'||a[i]=='0'){
s=(s+pows(2,i))%mod;
}
}
//printf("%I64d\n",s);
p=pows(2,n)%mod-1;
//printf("%I64d\n",k);
q=(p*pows(pows(2,m)-1,mod-2))%mod;
s=(s*q)%mod;
printf("%I64d\n",s);
}
return 0;
}
//除法取余方法的一种,(a/b)%mod,等价于(a*b^(mod-2))%mod,mod为素数
codeforces 327C Magic Five 分数形式整数取余
最新推荐文章于 2023-08-16 10:12:33 发布