PAT 乙级 1017 A除以B (20) C++版

1017. A除以B (20)

时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。

输入格式:

输入在1行中依次给出A和B,中间以1空格分隔。

输出格式:

在1行中依次输出Q和R,中间以1空格分隔。

输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3

注意点:A只有一位数的时候,A的第一位小于B的时候

 1 // 1017.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 #include<iostream>
 6 #include<string>
 7 #include<typeinfo>
 8 
 9 using namespace std;
10 
11 int main()
12 {
13     string A,Q;
14     int B, R;
15 
16     cin >> A >> B;
17 
18     int size = A.size();
19 
20     if (size == 1)
21         cout << (A[0] - 48) / B << " " << (A[0] - 48) % B << endl;
22     else
23     {
24         if ((A[0]) < B+48)
25         {
26             Q.push_back((((A[0] - 48) * 10 + A[1] - 48) / B)+48);
27             R = ((A[0] - 48) * 10 + A[1] - 48) % B;
28         }
29         else
30         {
31             Q.push_back((A[0] - 48) / B+48);
32             R = (A[0] - 48) % B;
33 
34             Q.push_back(((R * 10 + A[1] - 48) / B)+48);
35             R = (R * 10 + A[1] - 48) % B;
36         }
37 
38         for (int i = 2; i < size; ++i)
39         {
40             Q.push_back(((R * 10 + A[i] - 48) / B) + 48);
41             R = (R * 10 + A[i] - 48) % B;
42         }
43 
44         cout << Q << " " << R << endl;
45     }
46 
47     return 0;
48 }

 

posted on 2017-07-25 22:19  么么打123  阅读(415)  评论(0编辑  收藏  举报