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
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int toInt(char a)
{
return a - '0';
}
int main()
{
string A;
int B=0;
vector<int> Q;//商
int R;//余数
int q = 0;
int r;
cin >> A >> B;
if (A.length() < 2 && toInt(A[0]) < B)
cout << "0 " << A[0];
else
{
for (int i = 0; i < A.length(); i++)
{
q = q + toInt(A[i]);
while (q < B)
{
Q.push_back(0);
i++;
//cout << A.length() << "..." << endl;
if (i == A.length())
break;
q = q * 10 + toInt(A[i]);
}
r = q / B;
Q.push_back(r);
q = q%B * 10;
}
int i;
for (i = 0; i < Q.size() - 1; i++)
if (Q[i] == 0)
continue;
else
break;
for (int j = i; j < Q.size(); j++)
cout << Q[j];
cout << " " << q / 10;
}
system("pause");
return 0;
}
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
int main()
{
char str[1001] = { 0 };
int data = 0, i = 0;
int tmp = 0, flag = 0;
cin >> str >> data;
for (i = 0; i < strlen(str); i++)
{
tmp = tmp * 10 + str[i] - '0';
if (tmp >= data)
{
cout << tmp / data;
flag = 1;
}
else if (flag == 1) //代表商的最高位不是0
{
cout << 0;
}
tmp = tmp % data;
}
if (flag == 0)
{
cout << 0;
}
/* 输出余数 */
cout << " " << tmp << endl;
system("pause");
return 0;
}