题目:救救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;
}
京公网安备 11010502036488号