E1. Erase and Extend (Easy Version)

传送门

题意:
两种操作,一种是删最尾端的字符,一种是s = s + s(s代表剩下的字符串)求经过这两个操作能够到达的最小的字符串


思路:
贪心的取即可,每回合首端进行比较,首端相等就连续着比较,直到不相等,当前位比mod之后那一位大位置,最后模数就是答案


总结:
对于循环节的输出可以使用取余,对于循环的比较也可以用取余,比较的巧妙。,学到了

点击查看代码
#include <bits/stdc++.h>
#define endl '\n'
#define IOS ios::sync_with_stdio(false);
using namespace std;

typedef long long ll;

int n, k;
string s;

int main()
{
	IOS; cin.tie(0), cout.tie(0);
    cin >> n >> k;
    cin >> s;
    if (n == 1)
    {
        for (int i = 0; i < k; ++i)
            cout << s[0];
        cout << endl; 
        exit(0);
    }
    int  mod = 1;
    for (int i = 0; i < s.size(); ++i)
    {
        if (s[i] < s[i % mod])
            mod = i + 1;
        if (s[i] > s[i % mod])
            break;
    }
    
    for (int i = 0; i < k; ++i)
        cout << s[i % mod];
	return 0;
}
/*
8 16
dbdaaaac
*/
posted @ 2022-10-08 17:56  YUGUOTIANQING  阅读(60)  评论(0)    收藏  举报