最后一个点MLE
查看原帖
最后一个点MLE
1026044
zixiao楼主2024/10/26 15:08
#include<bits/stdc++.h>
using namespace std;
int t,maxn=INT_MIN;
int qu[100],st[11]={6,2,5,5,4,5,6,3,7,6};
string dp[1000001];
string _min(string a,string b){
	if(a=="Z") return b;
	if(b=="Z") return a;
	if(a.size()!=b.size()) {
		if(a.size()<b.size()) return a;
		else return b;
	}
	else {
		if(a>b) return b;
		else return a;
	}
}
int main(){
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	cin>>t;
	int flag7=0,flag8=0;
	for(int i=1;i<=t;i++){
		cin>>qu[i];
		maxn=max(maxn,qu[i]);
		if(qu[i]%7==0) flag7++;
		if(qu[i]%7==1) flag8++;
	}
	if(flag7==t||flag8==t){
		if(flag7==t) {
			for(int i=1;i<=t;i++) {
				for(int j=1;j<=qu[i]/7;j++) cout<<8;
				cout<<endl;
			}
			return 0;
		}
		else {
			for(int i=1;i<=t;i++) {
				cout<<10;
				for(int j=1;j<qu[i]/7;j++) cout<<8;
				cout<<endl;
			}
			return 0;
		}
	}
	for(int i=1;i<=maxn;i++) dp[i]="Z";
	dp[2]="1";
	dp[3]="7";
	dp[6]="6";
	dp[4]="4";
	dp[5]="2";
	dp[7]="8";
	for(int i=0;i<10;i++){
		for(int j=st[i];j<=maxn;j++) {
			if(j-st[i]<2) continue;
			dp[j]=_min(dp[j-st[i]]+char(i+'0'),dp[j]);
		}
	}
	for(int i=1;i<=t;i++) {
		if(qu[i]<2) cout<<-1<<endl;
		else
		cout<<dp[qu[i]]<<endl;
	}
	return 0;
}
2024/10/26 15:08
加载中...