当前位置: 代码迷 >> 综合 >> 【PAT乙等】1017?A除以B(20?分)
  详细解决方案

【PAT乙等】1017?A除以B(20?分)

热度:80   发布时间:2023-11-11 18:01:43.0

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

输入格式:

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

输出格式:

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

输入样例:

123456789050987654321 7

输出样例:

17636684150141093474 3

 分析:

由于A的数很大,所以要用一个字符串接受, 然后写一个除法

#include <iostream>
#include <cstring>using namespace std;int main(void) {char a[1005],b[1005];int n;cin >> a >> n;int j = 0;int p = 1,num=0;int yushu=0;for(int i=0; i < strlen(a); i++) {num = num + (a[i]-'0');if( num / n != 0 ) {b[j++] = ((num) / n) + '0';yushu = ((num) % n);num = yushu * 10;}else {num = num * 10;if(strlen(a) == 1) b[j++] = '0';if ((a[i]-'0') / n == 0) {if (i!=0  && i != strlen(a) - 1)  b[j++] = '0';if (i!=0 && i == strlen(a) - 1)  b[j++] = '0';}if(i == strlen(a) - 1) {yushu = num /10;break;}}}for(int i = 0 ;i <j ; i++) {cout << b[i]; } cout << " " ;cout << yushu;return 0;
}