P8589 『JROI-8』对了,还有花,少女,银河

小清新简单构造题。

构造一个长度为 nn 的仅包含 0011 的数字串,满足 0101000010101111 出现的次数相等。反之报告无解。

经过对于这四个数的模拟组合发现,它们组成最短长度必然超过 55,如果 n<5n<5 必然无解。

因为要这四个数出现的次数相等,我们不妨把这四个数出现一次捆绑地打包在一起,输出 n/lenn/len 次,这样就可以保证出现次数相等。

经过对这四个数构造,会出现这样的合法情况:

  1. 0110001100

  2. 0011000110

我们发现,他们的总长度都为 55 且末位为 00。注意,在构造下一组的时候,我们只用填充 01100110 上去即可。

根据上面的论述,我们可以得出,只有长度是 (n5)mod4=0(n-5)\bmod4=0 时才有解。

CodeCode

#include<bits/stdc++.h>
using namespace std;
const int N =1e6+10;
int main()
{
// 	freopen(".in","r",stdin);
// 	freopen(".out","w",stdout);
	int n;
	cin>>n;
	if(n<5)
		puts("-1"),exit(0);
	if(n==5)
		cout<<"01100"<<endl,exit(0);
	if((n-5)%4==0)
	{
		cout<<"01100";
		for(int i=1;i<=(n-5)/4;i++)
			cout<<"0110";
	}
	else
		cout<<"-1"<<endl;
	return 0;
}
posted @   June_Failure  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示