1 条题解

  • 0
    @ 2026-6-19 10:30:06

    📝 题目大意

    给定一个长度为 131 \sim 3 的小写字母字符串 SS,将其重复若干次,得到一个长度恰好为 66 的字符串并输出。保证这样的字符串唯一。

    💡 解题思路

    1. 题目分析S{1,2,3}|S| \in \{1, 2, 3\},目标长度 66 恰好是 1,2,31, 2, 3 的公倍数。因此只需将 SS 重复 6S\frac{6}{|S|} 次即可。
    2. 算法推导:设 len=Slen = |S|,则重复次数 k=6lenk = \frac{6}{len}。直接根据 lenlen 的三种情况分类处理:
      • len=1len = 1:输出 66SS
      • len=2len = 2:输出 33SS
      • len=3len = 3:输出 22SS
    3. 边界与细节:无特殊边界情况。SS 仅由小写字母组成,直接拼接即可。

    ⏱️ 复杂度分析

    • 时间复杂度O(1)O(1),最多输出 66 个字符。
    • 空间复杂度O(1)O(1),仅存储原字符串 SS(长度不超过 33)。

    💻 标准代码 (C++)

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	string s;
    	cin >> s;
    	int len = s.size();          // 获取字符串长度 (1, 2, 或 3)
    	if (len == 1)
    	{
    		for (int i = 1; i <= 6; i++) cout << s;  // 长度 1 → 重复 6 次得到长度 6
    	}
    	else if (len == 2)
    	{
    		for (int i = 1; i <= 3; i++) cout << s;  // 长度 2 → 重复 3 次得到长度 6
    	}
    	else  // len == 3
    	{
    		for (int i = 1; i <= 2; i++) cout << s;  // 长度 3 → 重复 2 次得到长度 6
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    599
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者