为什么感觉我的第二题一点儿问题都没问题呢? #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int T,num1,num2,len,flag; string x,ans; void output(){for(int i = 0;i < len;i++)cout<<ans[i];cout<<endl;} bool pd() { if(x[0] > '7') { len++; return true; } int res=len/2+1,sum=0; for(int i = 0;i < res;i++) { if(i != res-1 && x[i] > '7') { len++; return true; } if(x[i] == '7') sum++; } if(sum == res) { len++; return true; } return false; } void work(int pos) { for(int i = pos;i < len;i++) { if(num1) {ans[i]='4';num1--;} else ans[i]='7'; } } int main() { cin>>T; while(T--) { num1=0,num2=0,len=0,flag=0; cin>>x; len=x.length(); x[len]=0; if(len & 1 || pd()) { len++; num1=num2=len/2; work(0); output(); } else { num1=num2=len/2; for(int i = 0;i < len;i++) { if(flag) { work(i); output(); break; } if(num1 && x[i] >= '0' && x[i] < '4') { num1--; ans[i]='4'; flag=1; } else if(num1 && x[i] == '4' && x[i+1] < '7') { num1--; ans[i]='4'; } if((num2 && x[i] > '4' && x[i] < '7')) { num2--; ans[i]='7'; flag=1; } else if(num2 && x[i] == '7' && x[i+1] < '7') { num2--; ans[i]='7'; } } if(!flag) output(); } } return 0; } 求职ing
全部评论
(2) 回帖