题目链接:传送门
题意:略
最后简化为2^(n-1)次
附上代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<deque>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF = 1000000000;
const int MAXN = 1000100;
char ch[100005];
const long long mod = 1000000007;
long long Mode(long long a, long long b, long long mode)
{
long long sum = 1;
while (b) {
if (b & 1) {
sum = (sum * a) % mode;
b--;
}
b /= 2;
a = a * a % mode;
}
return sum;
}
int main(void) {
int t;
scanf("%d", &t);
while (t--) {
long long sum = 1;
scanf("%s", ch);
long long t = 2;
for (int i = strlen(ch)-1; i>=0; i--) {
if ((ch[i] - '0') != 0) {
sum *= Mode(t, ch[i] - '0', mod);
}
t = Mode(t, 10, mod);
sum %= mod;
}
sum *= Mode(2, mod - 2, mod);
sum = sum%mod;
printf("%lld\n", sum);
}
return 0;
}