1017 A除以B
题目描述
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
题目分析
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
这里的A是不超过1000位的正整数,超出了一般数据类型的表示范围,涉及到大整数的运算,用字符串来表示大数。这里的大数除法思想是:先用大数字符串的第一个数即是s[0]除以被除数,样例中是s[0]=1,用1/7,Q=0,R=1,再用R*10+s[1]除以7,得到商和余数,(这里为什么余数要乘以10?因为这个余数是上一个字符除以7余下的,相比较算术运算中的十位和个位,先用十位上的数除以7,余数不等于0,则在计算个位除以7时,需要加上十位余下的数,计算才正确。)以此类推,直到计算完字符串的最后一个字符。
C++代码
1 | #include <iostream> |
大数四则运算:https://www.cnblogs.com/wuqianling/p/5387099.html
各种数据类型的取值范围:https://www.cnblogs.com/fightformylife/p/4022058.htmlhttps://www.cnblogs.com/fightformylife/p/4022058.html