传送门

观察发现 x x x不大,应该可以直接模拟

而且光标最多移动到 x x x位置,意味着只需要知道 [ 1 , x ] [1,x] [1,x]的字符是什么就可以了

所以先模拟到 x x x位置,然后就直接计算长度即可

很无语的题目(不过作为 d i v 1 A div1A div1A也一般般八…)

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 3e6+10;
const int mod = 1e9+7;
char a[maxn];
int x;
signed main()
{
	int t; cin >> t;
	while( t-- )
	{
		scanf("%lld%s",&x,a+1);
		int now = strlen( a+1 ), flag = 0;
		for(int i=1;i<=x;i++)
		{
			//暂时暴力模拟
			if( flag==0 )
			{
				int last = now;
				for(int ci=1;ci<=(a[i]-'0')-1;ci++)
				for(int j=i+1;j<=last;j++)
					a[++now] = a[j];
				if( now>=1e6 )	flag = 1;
			}
			else//长度已经大于1e6了	
				now = ( now+(now-i)*(a[i]-'0'-1) )%mod;
		}
		cout << (now%mod+mod)%mod << endl;
	}
}