2 条题解

  • 0
    @ 2025-8-7 11:02:46
    #include <bits/stdc++.h>
    using namespace std;
    string sum[15]={"-1","-1","1","7","4","2","6","8"};
    string dp[15];
    string mn(string x,string y){
    	if(x.length()!=y.length()) return(x.length()>y.length()?y:x);
    	return x>y?y:x;
    }
    string res[55];
    int T,N[55],_N;
    void solve(int n){
    	dp[0]=dp[1]="-1";
    	for(int i=2;i<=n;i++){
    		dp[i%8]="0";
    		dp[i%8]=dp[(i-2+8)%8]+sum[2];
    		if(i<=7) dp[i]=sum[i];
    		for(int j=i-2;j>=0&&j>=i-7;j--){
    			if(dp[j%8]!="-1") dp[i%8]=mn(dp[i%8],dp[j%8]+sum[i-j]);
    			if(dp[j%8]!="-1"&&dp[j%8]!="0"&&i-j==6) dp[i%8]=mn(dp[i%8],dp[j%8]+"0");
    		}
    		for(int j=1;j<=T;j++){
    			if(N[j]==i) res[j]=dp[i%8];
    		}
    	}
    }
    signed main(){
    	ios::sync_with_stdio(0); cin.tie(0);
    	cin>>T;
    	for(int i=1;i<=T;i++){
    		cin>>N[i];
    		_N=max(_N,N[i]);
    	}
    	solve(_N);
    	for(int i=1;i<=T;i++){
    		if(res[i]=="") cout<<"-1";
    		cout<<res[i]<<endl;
    	}
    	return 0;
    }
    
    • 0
      @ 2025-8-7 11:00:47
      #include<bits/stdc++.h>
      using namespace std;
      long long n,t,ans,stick[10]={6,2,5,5,4,5,6,3,7,6};
      int main(){
      cin>>t;
       while(t--){
      cin>>n;
      ans=1e9+1;
      if(n==1)cout<<-1;
      else if(n==2)cout<<1;
      else if(n==3)cout<<7;
      else if(n==4)cout<<4;
      else if(n==5)cout<<2;
      else if(n==6)cout<<6;
      else if(n==7)cout<<8;
      else if(n%7==0)for(int i=1;i<=n/7;i++)cout<<8;
      else if(n%7==1){
          cout<<10;
      for(int i=1;i<=(n-8)/7;i++)cout<<8;
      }
      else if(n%7==2){
      cout<<1;
      for(int i=1;i<=(n-2)/7;i++)cout<<8;
      }
      else if(n%7==3){
      if(n==10)cout<<22;
      else {
      cout<<200;
      for(int i=1;i<=(n-17)/7;i++)cout<<8;
      }
      }
           else if(n%7==4){
      cout<<20;
      for(int i=1;i<=(n-11)/7;i++)cout<<8;
      }
      else if(n%7==5){
      cout<<2;
      for(int i=1;i<=(n-5)/7;i++)cout<<8;
      }
      else if(n%7==6){
      cout<<6;
      for(int i=1;i<=(n-6)/7;i++)cout<<8;
      }
      cout<<"\n";
      }
      }
      • 1

      信息

      ID
      2764
      时间
      1000ms
      内存
      256MiB
      难度
      6
      标签
      递交数
      128
      已通过
      36
      上传者