SCP-JT3新题解
  • 板块学术版
  • 楼主yandiliya
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/11/10 20:05
  • 上次更新2024/11/10 22:15:20
查看原帖
SCP-JT3新题解
794107
yandiliya楼主2024/11/10 20:05

逛了一圈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;
}
2024/11/10 20:05
加载中...