7-35 6翻了
延长字符串,使用s.push_back('s')不容易出错
小秦种树
//相当于上一题,可知要开个数组t[p]代表p这个区间的数字和 。
//同时为了及时得到是否需要对区间进行开根号操作,还要开个数组
//Add,其中add[p]=1代表这个区间不需要再开根号了,add[p]=0代表这个区间需要再开根号了。
//则对于某个区间p,只有当其左右两个子树都不要进行开根号操作时,它
//才具备不需要进行开根号的操作。
// 即add[p]=add[p1]&add[p2];
//对每个区间统计总和(反正要输出的),如果总和<=1,则打上一
//个标记,代表是没必要再开根号了。
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
string s,ans;
getline(cin,s);
int cur=0,anscur=-1;
while(cur<s.size())
{
if(s[cur]=='6')
{
// cout<<s[cur]<<" 1"<<endl;
int len=0;
while(s[cur+len]=='6')
{
len++;
}
// cout<<"len "<<len<<endl;
cur+=len;
if(len>3&&len<=9)
{
anscur++;
ans[anscur]='9';
// cout<<"in"<<anscur<<ans[anscur]<<endl;
}
if(len>9)
{
anscur++;
ans[anscur]='2';
anscur++;
ans[anscur]='7';
}
if(len<=3)
{
for(int i=0;i<len;i++)
{
anscur++;
ans[anscur]='6';
}
}
}
else
{
// cout<<s[cur]<<" 2"<<endl;
anscur++;
ans[anscur]=s[cur];
cur++;
}
}
// cout<<"si"<<anscur<<endl;
for(int i=0;i<=anscur;i++)
{
cout<<ans[i];
}
return 0;
}