谨以此篇 献给卡了我一个小时的代码灵魂
模拟思路尽量清晰 莫要盲目试探
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long n,m,k,w,ans,a[100000],ind[100000],in[100000],s[100000];
void fin(long long t) {
if(t>n) return ;
if(t==n&&w==1)
s[t]=0;
else {
if(w%ind[t]!=0) {
s[t]=w/ind[t];
w=w%ind[t];
}
if(w%ind[t]==0) { //卡了很长时间的代码灵魂
s[t]=w/ind[t]-1;
w=w-(s[t]*ind[t]);
}
}
ans=ans*10+s[t];
fin(t+1);
}
int main() {
freopen("spehex.in","r",stdin);
freopen("spehex.out","w",stdout);
long long i;
scanf("%lld",&n);
for(i=1;i<=n;i++) {
scanf("%lld",&in[i]);
a[i]=in[i];
}
ind[n]=1;
for(i=n-1;i>=1;i--) {
ind[i]=a[i];
a[i]=a[i]*a[i+1];
ind[i]=a[i]/ind[i];
}
scanf("%lld",&m);
for(i=1;i<=m;i++) {
scanf("%lld",&k);
ans=0;
if(k>a[1]) cout<<-1;
else {
w=k;
fin(1);
cout<<ans<<endl;
}
}
fclose(stdin);
fclose(stdout);
return 0;
}