打表最权威的一集
2025-08-25 13:24:02
发布于:辽宁
121阅读
0回复
0点赞
核心思路就是打表求最优
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
if(n%7==0) for(int i=1;i<=n/7;i++) cout<<8;
else if(n%7==1){
if(n==1) cout<<-1;
else{
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==3) cout<<7;
else if(n==10) cout<<22;
else{
cout<<200;
for(int i=1;i<=(n-17)/7;i++) cout<<8;
}
}
else if(n%7==4){
if(n==4) cout<<4;
else{
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{
cout<<6;
for(int i=1;i<=(n-6)/7;i++) cout<<8;
}
cout<<endl;
}
return 0;
}
全部评论 3
#include<bits/stdc++.h> using namespace std; int n,t,f[22]={0,-1,1,7,4,2,6,8,10,18,22,20,28,68,88,108,188,200,208,288,688,888}; int main(){ cin>>t; while(t--){ cin>>n; if (n<=21) cout<<f[n]<<"\n"; else{ int k=ceil(1.0*(n-21)/7); cout<<f[n-k*7]; while(k--) putchar('8'); cout<<"\n"; } } return 0; }2026-07-18 来自 广东
1#include<bits/stdc++.h> using namespace std; int t,n,x; int main(){ cin>>t; while(t--){ cin>>x;int mm=x/7; if(x==1)cout<<-1; else if(x==2)cout<<1; else if(x==3)cout<<7; else if(x==4)cout<<4; else if(x==5)cout<<2; else if(x==6)cout<<6; else if(x%7==0){ while(x>0)cout<<8,x-=7; }else if(x%7==1){ cout<<10;x-=8; while(x>0)cout<<8,x-=7; }else if(x%7==2){ cout<<1;x-=2; while(x>0)cout<<8,x-=7; }else if(x%7==3){ if(x==10)cout<<22; else { cout<<200;x-=17; while(x>0)cout<<8,x-=7; } }else if(x%7==4){ cout<<20;x-=11; while(x>0)cout<<8,x-=7; }else if(x%7==5){ cout<<28;x-=12; while(x>0)cout<<8,x-=7; }else if(x%7==6){ cout<<6;x-=6; while(x>0)cout<<8,x-=7; } cout<<"\n"; } return 0; }贪心
11小时前 来自 广东
0打表在这
2026-07-18 来自 广东
0













有帮助,赞一个