Fake News (medium)
题目
样例
思路
- n=1或2:直接构造。
- 2n:s=p+x+x+s‘+x+x,p=px。
- 2n+1:s=p+x+s‘+x+x,p=px。
代码
#include<bits/stdc++.h>
using namespace std;
string s,p;
void dfs(int n,char x)
{
if(n==1)
{
s=s+x;
p+=x;
return ;
}
if(n==2)
{
s=s+x+x;
p+=x;
return ;
}
if(n%2)
{
dfs(n/2,x+1);
s=p+x+s.substr(p.size(),s.size()-p.size()+1)+x+x;
p+=x;
}
else
{
dfs(n/2-1,x+1);
s=p+x+x+s.substr(p.size(),s.size()-p.size()+1)+x+x;
p+=x;
}
}
int main()
{
int n;
scanf("%d",&n);
dfs(n,'a');
cout<<s<<" "<<p;
return 0;
}