AB 字符打印机 题目解析

题目

U736985 AB 字符打印机 – 洛谷

题解

题目给定 $n$ 次操作,每次输入两个整数 $t$ 和 $k$,当 $t=0$ 时输出 $k$ 个字符 a,否则输出 $k$ 个字符 b,要求所有操作的输出结果直接拼接,不添加空格或换行。

我们可以直接使用循环和分支结构模拟整个过程。首先读入操作次数 $n$,然后依次处理每一次操作,使用 if 判断 $t$ 的值,确定当前需要输出的字符,再通过一个循环将对应字符输出 $k$ 次即可。

需要注意的是,题目要求所有操作的结果拼接成一个完整的字符串,因此每次输出字符后不需要换行,也不需要输出空格。另外,当 $k=0$ 时,循环不会执行,自然也不会输出任何字符,不需要额外进行特判。

设所有操作输出的字符总数为 $S=\sum_{i=1}^{n}k_i$,由于每次操作只需要进行一次判断,再输出 $k_i$ 个字符,因此整个算法的时间复杂度为 $O(n+S)$。我们可以直接使用 cout 输出每一个字符,不需要额外存储最终字符串,因此额外空间复杂度为 $O(1)$,显然可以通过此题。

#include <bits/stdc++.h>

using i128 = __int128;
using ll = long long;
using ull = unsigned long long;
using de = double;
using ld = long double;
using namespace std;

void solve()
{
    int n; cin >> n;

    for (int i = 0; i < n; ++i)
    {
        int t, k; cin >> t >> k;

        if (t == 0)
        {
            for (int j = 0; j < k; ++j)
            {
                cout << 'a';
            }
        }
        else
        {
            for (int j = 0; j < k; ++j)
            {
                cout << 'b';
            }
        }
    }
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int t = 1;
    // cin >> t;

    while (t--)
    {
        solve();
    }
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇