本题是一个经典的数学计算问题。已知一本书的单价是 13 元,小杨拥有的零用钱数为 m 元。我们需要求出他最多可以买多少本书,以及购买这些书之后还剩下多少零用钱。
题目要求输出两行:
由于数量不大(0 < m < 200),直接利用数学运算即可。
我们可以把问题转化为两个简单的数学运算:
m / 13,向下取整,结果为整数。m % 13,得到不能被 13 整除的余数部分。例如,当 m = 50 时:
输出:
3
11
本题的算法很简单,核心就是完成一次除法和一次取模。在程序实现时,直接读取整数 m,然后分别输出 m / 13 和 m % 13。
cpp1#include <iostream> 2using namespace std; 3 4int main() { 5 int m; 6 cin >> m; 7 cout << m / 13 << endl; // 本书的数量 8 cout << m % 13 << endl; // 剩余的钱 9 return 0; 10}
代码解释:
int m; 定义一个整型变量用于存储零用钱数额。cin >> m; 从标准输入读取金额。cout << m / 13 << endl; 输出整除结果,即本数。cout << m % 13 << endl; 输出取模结果,即剩余钱数。读入一个整数,做一次除法、一次取模,最后输出结果。所有操作均为常数时间,因此时间复杂度为 O(1)。
空间复杂度也是 O(1),仅使用了少量变量。
这道题考察的是对整除和取余运算的基本了解,非常适合作为入门练习题。