题解:洛谷 AT_abc470_a Fizz

【题目来源】

洛谷:AT_abc470_a [ABC470A] Fizz

【题目描述】

给定一个正整数 \(N\)

输出 \(N\) 行。第 \(i\) 行(\(1 \le i \le N\))中,如果 \(i\)\(3\) 的倍数,则输出 Fizz;否则输出 \(i\)

【输入】

输入一行一个整数 \(N\)

【输出】

输出 \(N\) 行,每行一个字符串或整数,表示答案。

【输入样例】

4

【输出样例】

1
2
Fizz
4

【核心思想】

  1. 问题分析:给定正整数 \(N\),对 \(i = 1\)\(N\) 的每个整数,若 \(i\)\(3\) 的倍数则输出 Fizz,否则输出 \(i\) 本身。这是一个模拟问题,直接按题意遍历判断即可,无任何算法技巧。

  2. 算法选择

    • 直接模拟:循环遍历 \(1\)\(N\),用取模运算判断 \(3\) 的倍数
  3. 关键步骤

    • 读取 \(N\)
    • 循环 \(i\)\(1\)\(N\)
      • \(i \bmod 3 = 0\):输出 Fizz
      • 否则:输出 \(i\)
  4. 时间/空间复杂度

    • 时间复杂度:\(O(N)\)
    • 空间复杂度:\(O(1)\)
  5. 模拟的核心思想

    • 按照题目描述直接实现,无需优化或转换
    • 适用于规则明确、步骤简单的输出类问题

【算法标签】

入门 #模拟

【代码详解】

#include <bits/stdc++.h>
using namespace std;
int n; // n:需要输出的行数

int main()
{
    cin >> n; // 读入正整数n
    for (int i=1; i<=n; i++) // 循环枚举1到n的每个整数
    {
        if (i%3==0) // 判断当前数i是否为3的倍数
            cout << "Fizz" << endl; // 是3的倍数,输出"Fizz"
        else
            cout << i << endl; // 不是3的倍数,输出该数本身
    }
    return 0;
}

【运行结果】

4
1
2
Fizz
4
posted @ 2026-08-23 21:52  团爸讲算法  阅读(8)  评论(0)    收藏  举报