MLE 0pts 求调
查看原帖
MLE 0pts 求调
753068
EchoHua0402楼主2024/11/4 20:18
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
string dp[N],now[7];
inline string minim(string a,string b)
{
	int lena=a.size(),lenb=b.size();
	if (lena!=lenb) return (lena<lenb?a:b);
	for (int i=0;i<lena;i++)
		if (a[i]!=b[i]) return (a[i]<b[i]?a:b);
	return a;
}
inline string work(int cnt)
{
	string res=now[cnt];
	for (register int i(1);i<cnt;i++) res=minim(res,now[i]);
	return res;
}
int main()
{
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	for (register int i(1);i<N;i++) dp[i]="-1";
	int cnt=0;
	dp[2]="1",dp[3]="7",dp[4]="4",dp[5]="2",dp[6]="6",dp[7]="8";
	string a,b,c,d,e,f;
	for (register int i=8;i<=100;i++)
	{
		cnt=0;
		if (dp[i-2]!="-1") now[++cnt]=dp[i-2]+'1';
		if (dp[i-3]!="-1") now[++cnt]=dp[i-3]+'7';
		if (dp[i-4]!="-1") now[++cnt]=dp[i-4]+'4';
		if (dp[i-5]!="-1") now[++cnt]=dp[i-5]+'2';
		if (dp[i-6]!="-1") now[++cnt]=dp[i-6]+'0';
		if (dp[i-7]!="-1") now[++cnt]=dp[i-7]+'8';
		dp[i]=work(cnt);
	}
	for (int i=101;i<N;i++) dp[i]=dp[i-7]+'8';
	int T,n;
	cin>>T;
	while (T--)
	{
		cin>>n;
		cout<<dp[n]<<"\n";
	}
	return 0;
}
2024/11/4 20:18
加载中...