本题要求计算 /,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
1 #include<iostream> 2 #include<string> 3 4 using namespace std; 5 6 int main() { 7 string s; //存A 8 int b, tmp = 0, t = 0; 9 cin >> s >> b; 10 t = (s[0] - '0') / b; 11 //商不为0 并且 长度大于1 或者 长度等于1 输出第一个字符 12 //不满足条件的说明,第一个不用上位,商为0,但是因为在最前面,所以不用输出 13 if ((t != 0 && s.length() > 1) || s.length() == 1) { 14 cout << t; 15 } 16 //用tmp保存余数 17 tmp = (s[0] - '0') % b; 18 19 for (unsigned int i = 1; i < s.length(); i++) { 20 t = (tmp * 10 + s[i] - '0') / b; //第一个数字已经保存在tmp中 从i=1也就是第二个开始 21 cout << t; //输出商 22 tmp = (tmp * 10 + s[i] - '0') % b; //保存余数 23 } 24 cout << ' ' << tmp; 25 return 0; 26 27 }