PAT乙级1017.A除以B(20 分)
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
两种方法:
方法一:节省存储空间,采用边计算边输出结果的形式,不过要考虑什么时候开始输出,在代码形式上稍微复杂一些
方法二:将计算的结果存储起来,最后一并输出,占用的存储空间较多,但代码逻辑上较为清晰
这里采用方法二
#include<iostream> #include<stdlib.h> #include<string> using namespace std; int main() { string A; int B; int temp = 0; string Q = ""; cin >> A >> B; int flag = 0; for (int i = 0; i < A.length(); i++) { Q = Q + to_string((temp * 10 + A[i] - '0') / B); temp = (temp * 10 + A[i] - '0') % B; } int j; for (j = 0; j < Q.length() - 1; j++) { if (Q[j] != '0') break; } cout << Q.substr(j, Q.length() - j + 1) << " " << temp << endl; system("pause"); return 0; }