Fizz 的题解
记住只在没有思路时使用题解,不要从它复制粘贴代码。请尊重题目和题解的作者。
在解题之前提交题解的代码会导致封禁。
在解题之前提交题解的代码会导致封禁。
作者:
概述
本题要求对于给定的正整数 ,按行输出
到
的每个数,其中
的倍数输出
Fizz。核心解法是遍历每个数,用取模运算判断其是否为 的倍数后决定输出内容。
分析
核心观察
一个数能否被 整除,等价于它对
取模的余数是否为
,即
。因此每个数只需一次取模判断即可确定输出。
思路
依次枚举 ,对每个
判断:
若成立,则该行输出 Fizz;否则输出 本身。整个过程为一次线性扫描,无需任何预处理或额外存储。
具体示例
以样例输入 为例:
:
,输出
;
:
,输出
;
:
,输出
Fizz;:
,输出
。
输出结果与样例输出 1 一致。
算法步骤
- 读入正整数
。
- 令
i从循环到
,若
则输出
Fizz,否则输出i。
复杂度分析
- 时间:
- 空间:
实现注意事项
- 输入仅一个整数,直接读入即可。
- 判断
的倍数时使用取模运算,注意余数为
与其他余数两种分支。
- 每行输出后必须换行,以保证输出格式与样例一致。
- 约束中
,数值很小,普通整型即可满足要求。
源代码
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
for (int i = 1; i <= N; i++) {
if (i % 3 == 0) cout << "Fizz" << '\n';
else cout << i << '\n';
}
return 0;
}
N = int(input())
for i in range(1, N + 1):
print("Fizz" if i % 3 == 0 else i)
评论