1 条题解
-
0
练27.1 叮叮当当
解题思路
依次报数 1~20,每个数后输出一个空格。若能被 2 整除追加“叮叮”,能被 3 整除追加“当当”;至少说了一个词才换行。
正确性说明
按上述推导执行:每次仅处理当前输入或当前步骤,并把它对答案的贡献计入对应状态。所有需要处理的情况均被覆盖,结束时保存的量就是题目所求。
易错点
同时为 2、3 倍数时连续说两个词,不能只执行一个分支。
复杂度
时间 O(1),空间 O(1)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); for (int i = 1; i <= 20; i++) { cout << i << " "; if (i % 2 == 0) cout << "叮叮"; if (i % 3 == 0) cout << "当当"; if (i % 2 == 0 || i % 3 == 0) cout << "\n"; } return 0; }
- 1