浙大 pat Basic Level 1017
2014-02-28 14:37
288 查看
1017. A除以B (20)
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。输入格式:
输入在1行中依次给出A和B,中间以1空格分隔。
输出格式:
在1行中依次输出Q和R,中间以1空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
//输入"3 4", 输出"0 3" #include <iostream> #include <vector> using namespace std; int main() { int Division(int,int,int*); int B, reminder = 0; vector<int> A, quotients; //double 只能提供15位有效数字 char temp = getchar(); bool flag = true; while('\n' != temp) { if (flag) { A.push_back(temp - '0'); } else B = temp - '0'; temp = getchar(); if (' ' == temp) { flag = false; temp = getchar(); } } for(vector<int>::size_type i = 0; i != A.size(); i++) { int tempquotients = Division(A[i]+10*reminder,B,&reminder); if(quotients.empty()) { if ((0 != tempquotients)||(A.size() == 1)) //without "(A.size() == 1)", (18分) quotients.push_back(tempquotients); } else quotients.push_back(tempquotients); } for (vector<int>::size_type i = 0; i != quotients.size(); i++) { cout << quotients[i]; } cout << ' ' << reminder << endl; system("pause"); return 0; } int Division(int dividend,int devisor,int *reminder) { *reminder = dividend % devisor; return (dividend - *reminder)/devisor; }