思路:先用一个数组提前保存好2的n次方
思路:先用一个数组提前保存好2的n次方
#include <iostream>
#include <string>
using namespace std;
#define MAXN 100001
const int M=1e9+7;
int f[MAXN];
void calculate()
{
f[0]=1;
for (int i=1;i<MAXN;i++)
f[i]=(2*f[i-1])%M;
}
int main()
{
int t; cin>>t;
string a;int b;
while (t--)
{
cin>>a>>b;
calculate();
int s=a.size();
long long sum=0,sum1=1,temp=1;
for (int i=0;i<s;i++)
{
if(a[i]=='0'||a[i]=='5'){
sum=(sum+f[i])%M;
}
}
for (int i=1;i<b;i++)
{
temp=(temp*f[s])%M;
sum1=(sum1+temp)%M;
}
sum=(sum*sum1)%M;
cout<<sum<<endl;
}
return 0;
}