挂了,不知道为什么。
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
int const maxn=60;
ll const inf=1000000000000000;
ll u[11]={6,2,5,5,4,5,6,3,7,6};
ll dp[maxn+1]={inf,inf,1,7,4,2,6,8};
int n,T;
int main(){
for(int i=8;i<=maxn;i++){
dp[i]=inf;
for(int j=0;j<=9;j++){
dp[i]=min(dp[i-u[j]]*10+j,dp[i]);
}
}
scanf("%d",&T);
while(T--){
scanf("%d",&n);
if(n<=maxn){
printf("%lld\n",dp[n]==inf?-1:dp[n]);
continue;
}
int p=n/7;
int q=n%7;
while(dp[q]==inf){
q+=7;
p--;
}
printf("%lld",dp[q]);
for(int i=1;i<=p;i++){
printf("8");
}
printf("\n");
}
return 0;
}