求调
查看原帖
求调
1073963
2023lpx楼主2024/10/28 12:45

挂了,不知道为什么。

#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;
} 

2024/10/28 12:45
加载中...