初三生初中的最后一次竞赛,却带着如此的不甘和遗憾黯然离场。
代码可以AC,但是考场上怕A不了,打了两个特殊性质的特判。结果脑子一抽,B性质打错了,痛失70分和省一。不知道怎么想的,我还试了一下15,代码输出801,我说是对的。
后面把B性质删掉,在洛谷上面评测就A了。
(再次沉重悼念)```cpp
#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;
}