题解
小美要健康
1 条题解
-
0
解题思路
这道题要判断输入的日期是不是 9 的倍数。判断一个数是不是另一个数的倍数,最常用的办法是用取余运算符 %。
n % 9 表示“n 除以 9 后的余数”:
- 如果 n 是 9 的倍数,比如 9、18、27,那么 n 除以 9 的余数一定是 0,也就是 n % 9 == 0 成立;
- 如果 n 不是 9 的倍数,余数就不等于 0。
所以判断条件就是 n % 9 == 0。条件成立,说明今天是放纵日,输出 "KFC";条件不成立,说明今天要在家吃健康餐,输出 "home"。
这里要注意一个细节:取余运算符 % 的优先级比 == 高,所以 n % 9 == 0 会先算出 n % 9,再和 0 比较,写起来很自然,不需要加括号也不会出错。另外题目给的范围是 1 到 31,也就是一个月里的日期,直接对读入的 n 判断即可,不用考虑月份的长短问题。
参考代码
#include using namespace std;
int main() { int n; // n 表示这个月的日期 cin >> n; // 读入日期
if (n % 9 == 0) { // 日期除以 9 的余数为 0,说明是 9 的倍数 cout << "KFC" << endl; // 放纵日,输出 KFC } else { cout << "home" << endl; // 其他日子在家吃健康餐,输出 home } return 0;}
复杂度分析
程序只读入一个整数,做一次取余运算和一次比较,运算次数固定,与日期 n 的大小无关,时间复杂度是 O(1)。只用一个 int 变量,空间复杂度也是 O(1)。
- 1