我希望输入一个大于 0 的整数 n,让这段程序输出的结果为 3,那么 n
最小是()?
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, cnt = 0;
cin >> n;
if (n % 2 == 1)
cnt++;
if (n % 3 == 2)
cnt++;
if (n % 4 == 3)
cnt++;
if (n % 5 == 4)
cnt++;
cout << cnt;
return 0;
}
- 分析问题:
- 程序中对输入的整数(n)进行了一系列的条件判断。
- 条件分别是(n%) (2 = =1)、(n%) (3 = =2)、(n%) (4 = =3)、(n%) (5 = =4)。
- 最终输出的结果是满足这些条件的个数,题目要求输出结果为(3),求(n)的最小值。
- 逐步推导:
- 先看条件(n%) (2 = =1),这意味着(n)是一个奇数。
- 再看条件(n%) (3 = =2),满足这个条件的数有(5)、(8)、(11)等,这些数中奇数最小的是(5),所以此时(n)可能为(5)。
- 接着看条件(n%) (4 = =3),(5%) (4 = =1)不满足这个条件。继续找满足前两个条件且是奇数的数,(11)满足前两个条件且(11%) (4 = =3),所以此时(n)可能为(11)。
- 最后看条件(n%) (5 = =4),(11%) (5 = =1)不满足这个条件。继续找满足前三个条件且是奇数的数,(23)满足前三个条件且(23%) (5 = =3)。
- 此时(n = 23)满足所有条件且输出结果为(4),不满足输出结果为(3)。继续找下一个满足条件的数,(59)满足所有条件且输出结果为(3)。
- 得出结论: