#t206. 带余除法
带余除法
带余除法
题目背景
Special for beginners, ^_^
题目描述
给定被除数和除数,求整数商及余数。
此题中请使用默认的整除和取余运算,无需对结果进行任何特殊处理。看看程序运行结果与数学上的定义有什么不同?
输入格式
一行,包含两个整数,依次为被除数和除数(除数非零),中间用一个空格隔开。
输出格式
一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。
样例输入
10 3
样例输出
3 1
数据范围
1s, 1024KiB for each test case.
提示
一、/ 和 % 是一对:一个求商,一个求余
对两个整数:
a / b得到商的整数部分(小数部分直接丢掉);a % b得到余数。
printf("%d\n", 17 / 5); // 3
printf("%d\n", 17 % 5); // 2
它们满足一个恒等式,可以用来验算:
17 = 3 * 5 + 2 ✓
二、% 的三条规则
- 只能用于整数。
5.5 % 2编译不过(小数取余要用fmod)。 - 除数不能为 0,
a % 0会导致程序崩溃(RE)。 - 结果的符号跟着被除数走:
-7 % 3是-1,不是 2。正数运算时不用管这条。
三、% 最常见的用途
- 判断能不能整除:
n % 3 == 0表示 n 是 3 的倍数; - 取某一位数字:
n % 10是个位; - 控制循环范围:结果一定落在
0 ~ b-1之间(被除数非负时)。
四、常见错误
-
把
%当百分号用(输出百分号要写%%); -
对小数取余;
-
以为
-7 % 3是 2。 -
题面说「用默认的整除和取余」,就是直接用
/和%,不要自己写四舍五入。 -
商和余数在一行输出,中间一个空格。
自查:拿
10 3 → 3 1验证;再试10 4,想一想余数为什么一定小于除数。