top1编程
← 返回题目
题解

小美要健康

1 条题解

  • 0
    @ 2026-8-4 10:11:45

    解题思路

    这道题要判断输入的日期是不是 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