本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入格式:
输入在1行中依次给出A和B,中间以1空格分隔。
输出格式:
在1行中依次输出Q和R,中间以1空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
解题思路:使用string字符串,模拟手算的除法步骤。
void PAT1017(){
string num;
int B,tmp=0,att=0,i=1;
cin >> num >> B;
tmp = num[0] - '0';
if (tmp >= B)cout << tmp / B;
while (num[i] != '\0'){
att = tmp%B;
tmp = att * 10 + num[i] - '0';
cout << tmp / B;
++i;
}
cout << " " << tmp%B;
cout << endl;
}
方法二
void PATexe(){
string a = "123456789050987654321";
int b = 7;
int len = a.length();
bool flag = false;
int tmp = 0, sum = 0;
for (int i = 0; i < len; ++i){
tmp = a[i] - '0';
sum += tmp;
if (sum < b){ sum = sum * 10; if (flag)cout << '0'; }
else{
flag = true;
cout << sum / b;
if (i == len - 1)cout << " "<<sum%b;
sum = (sum%b)*10;
}
}
}