Codeforces-802H Fake News (medium)

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;
}
发布了173 篇原创文章 · 获赞 6 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/shidonghang/article/details/103003821