列表

详情


NC225388. 紫妹永不服输

描述

小红和紫m(划掉)紫妹准备玩一个游戏。
小红很喜欢 R 字母,因为 R 字母是 RED 的首位。而紫妹很喜欢 P 字母,因为 P 字母是 PURPLE 的首位。
小红想让你构造一个包含 个 'RP' 子序列的字符串。
紫妹想让你构造一个包含 个 'PR' 子序列的字符串。
你不想太麻烦,所以你想直接造一个字符串满足以上两个条件。但你不想让构造的字符串长度超过 100000

输入描述

两个正整数 

输出描述

如果无法构造出合法字符串,请输出 -1 。
否则输出任意合法字符串, 长度要求不超过

示例1

输入:

4 2

输出:

RRRRPRR

说明:

PRRPP、RRPPR 也是合法构造
它们都包含 4 个不同的 'RP' 子序列, 2 个不同的 'PR' 子序列。

示例2

输入:

1 0

输出:

RP

说明:

该字符串包含 0 个 'PR' , 1 个 'RP' , 符合要求
字符串 "RPG" 、  "R.I.P"  也符合要求

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++ 11.0.1) 解法, 执行用时: 7ms, 内存消耗: 476K, 提交时间: 2022-08-05 16:55:57

#include <bits/stdc++.h>
using namespace std;
int n,m;
int main()
{
	cin >> n >> m;
	for(int i=2;i*i<=(n+m);i++)
	{
		int x = i, y = (n+m)/x;
		if( x*y==n+m && x+y<=100000 )
		{
			for(int j=1;j<=x-m/y-(m%y!=0);j++)	cout << "R";
			for(int j=1;j<=y;j++)
			{
				cout << "P";
				if( j==m%y )	cout << "R";
			}
			for(int j=1;j<=m/y;j++)	cout << "R";
			return 0;
		}
	}
	cout << -1;
}

上一题