五的倍数

    xiaoxiao2021-12-14  17

    思路:先用一个数组提前保存好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; }
    转载请注明原文地址: https://ju.6miu.com/read-970642.html

    最新回复(0)