Codeforces Round 921 (Div. 2)(A~C)

A. We Got Everything Covered!

找出一个字符串S,满足条件:所有可能的长度为n,使用前k个小写字母的字符串P都是S的子串。

其中字符串S的长度尽可能短。

这种构造题,构造S的时候尽可能在原有的基础上去扩展,如果能扩展出来,那就是有规律。

n=1,k=3

S:abc

n=1,k=4(+1)                n=2(+1),k=3

S:abcd                             S:abcabc

n决定了每个字母最少出现的次数,所以上面的答案均是最短的情况。

AC代码

#include 
//#define int long long
#define per(i,j,k) for(int (i)=(j);(i)<=(k);++(i))
#define rep(i,j,k) for(int (i)=(j);(i)>=(k);--(i))
#define fr first
#define se second
#define endl '\n'
using namespace std;

int n,k;

void solve(){
    cin>>n>>k;
    per(i,1,n){
        per(j,1,k){
            cout<<(char)('a'+j-1);
        }
    }
    cout<>t;
    while(t--)solve(),init();
    return 0;
}

你可能感兴趣的:(Codeforces,C++,数据结构,算法,codeforce,div2,思维)