1017 A除以B (20 分)
题意描述:
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
解题思路:
有时候题目简单的让人无法相信。其实是我们使用的编程语言限制了我们的思考方式。使用Python的时候我们根本不会考虑整数是否会溢出的问题,就算是Java也有“大整数”可以用来解决这个问题。这道题目其实是留给C/C++选手实现大整数的整除和取余数的。
代码:
def main():
data = [int(x) for x in input().split()]
# 接收输入的两个整数
#print("{} {}".format(data[0] // data[1], data[0] % data[1]))
print(data[0] // data[1], data[0] % data[1])
# 输出结果
if __name__ == '__main__':
main()
易错点:
- 注意Python的print()函数会自动在逗号分隔的两项中间添加一个空格。
总结:
- 对于这道题目,有兴趣的同学可以试试下面的思路:
- 1)实现大整数的加法
- 2)使用循环每次 n - m 记录循环的次数和最后的余数即可。