题目:救救AR
来源:西南科技大学第十六届ACM程序设计竞赛暨绵阳市邀请赛
解题思路
输出一个长度不超过 n 的字符串,这个字符串存在 n 个子序列是 "AR"。
子序列的定义:从最初序列通过去除某些元素但不破坏余下元素的相对位置(在前或在后)而形成的新序列,这样的新序列称为最初序列的子序列。
最初的序列可以表示为 AR...RA...AR...R
,即 1
个 A,k
个 R,i-1
个 A,j
个 R。
这样,有 i * j + k
个子序列是 "AR"。此时序列的长度为 i + j + k
。
C++代码
#include<iostream> using namespace std; int main(){ int n; cin >> n; for(int i=1; i<n; ++i){ int j = n / i; int k = n - i*j; if(i + j + k <= n){ string s1 = "A"; string s2(k, 'R'); string s3(i-1, 'A'); string s4(j, 'R'); cout << s1 + s2 + s3 + s4 << endl; return 0; } } cout << -1 << endl; return 0; }