逛了一圈SCP-JT3的题解,发现没有我这种思路的,发出来看一下。有什么建议可以提一下。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int a[10]={6,2,5,5,4,5,6,3,7,6};//分别表示0~9的木棍形式需要的木棍数量
int main(){
int T;//T组数据
cin>>T;
while(T--){
int n;
cin>>n;
if(n==1||n==0){
//如果n是一或者0就退出
cout<<-1<<'\n';
continue;
}
int c= (n%7==0)?n/7:n/7+1;//c表示答案的位数
int d= (n%7==0)?n/7:n/7+1;//d同c,用来判断是否足够往下摆
for(int i=0;i<c;i++){
//枚举每一位
for(int j=0;j<10;j++){
if(i==0&&j==0)continue;//首位不为0
if(n-a[j]<=(d-1)*7){
//如果剩下的木棍用这种方式摆过后的数量还能继续摆
if(n-a[j]<0)continue;
//不能为负数
n-=a[j];
//减去摆的数量
cout<<j;
//输出这种摆放方案
break;
}
}
d--;
//d减去一层
}
cout<<'\n';
//换行
}
return 0;
}