五的倍数

来源:互联网 发布:php软件指的是什么 编辑:程序博客网 时间:2024/05/03 04:50

思路:先用一个数组提前保存好2的n次方


#include <iostream>#include <string> using namespace std;   #define MAXN 100001const 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; }


0 0