暴力枚举+特判=80pts
你说得对,但是我考场上没有想到正解,然后T2只剩30min了(什么开题顺序)
#include<bits/stdc++.h>
#define long long int
using namespace std;
int T;
bool flag;
int a[11]={6,2,5,5,4,5,6,3,7,6};
int getn(int n){
int cnt=0;
while(n){
cnt+=a[n%10];
n/=10;
}
return cnt;
}
signed main(){
cin>>T;
while(T--){
int n;
cin>>n;
if(n<=50){
if(n==1){
cout<<-1<<endl;
}else{
for(int i=0;i<INT_MAX;i++){
if(getn(i)==n){
flag=true;
cout<<i<<endl;
break;
}
}
if(!flag){
cout<<-1<<endl;
}
}
}else if(n%7==0){
int k=0;
k=n/7;
for(int i=0;i<k;i++){
cout<<8;
}
cout<<endl;
}else if(n%7==1){
int k=0;
k=(n-1)/7-1;
cout<<10;
for(int i=0;i<k;i++){
cout<<8;
}
cout<<endl;
}else{
for(int i=0;i<INT_MAX;i++){
if(getn(i)==n){
flag=true;
cout<<i<<endl;
break;
}
}
if(!flag){
cout<<-1<<endl;
}
}
}
return 0;
}
什么爆炸时间复杂度