代码A了,但是考场上怕错,打了特殊性质。 结果B性质打错了痛失70分和省一。(其它代码是对的,甚至把B的特判删掉都AC了)。初中的竞赛生涯就这样带着遗憾和不甘离场了。
最后欣赏一遍我的代码,就对它说再见了。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int T,n,maxn,b[N];
int t[10]={6,2,5,5,4,5,6,3,7,6};
bool f;
void dfs(int k,int res)
{
if(f) return ;
if(k==maxn+1) {
for(int i=1;i<=maxn;i++) cout<<b[i];
cout<<endl; f=1;
return ;
}
for(int i=0;i<=9;i++) {
if(k==1&&i==0) continue;
if(7*(maxn-k)<res-t[i]) continue;
if(k<=maxn-1&&res>=t[i] || k==maxn&&res==t[i])
{
b[k]=i;
dfs(k+1,res-t[i]);
}
}
return ;
}
int main()
{
freopen("sticks.in","r",stdin);
freopen("sticks.out","w",stdout);
cin>>T;
while(T--)
{
cin>>n; f=0;
maxn=ceil(n/7.0);
if(n%7==0) {//A
for(int i=1;i<=maxn;i++) cout<<8;
cout<<endl;
continue;
}
if(n%7==1&&n!=1&&n!=8) {//B
for(int i=1;i<maxn-1;i++) cout<<8;
cout<<"01\n";
continue;
}
dfs(1,n);
if(!f) cout<<-1<<endl;
}
return 0;
}