PAT B1017 A除以B (20 分)
作者:互联网
本题要求计算 /,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
#include <stdio.h> #include <algorithm> #include <string> #include <iostream> using namespace std; const int maxn = 1000001; int main(){ string a; int q[1000]; int b,r; cin >> a >> b; int margin = 0, num = 0; int mod, div; for (int i = 0; i < a.length(); i++){ int tmp = a[i] - '0'; tmp = margin * 10 + tmp; mod = tmp % b; div = tmp / b; margin = mod; q[num++] = div; } r = margin; int flag = 0; for (int i = 0; i < num; i++){ if (num == 1)printf("%d", q[i]); else{ if (q[i] == 0 && flag == 0)continue; else{ flag = 1; printf("%d", q[i]); } } } printf(" %d", r); system("pause"); return 0; }
本题考查的是大数四则运算的除法,还比较简单。
注意点:除法的结果前面的0需要去除,但如果只有一位要保留。也可以不设置结果数组,除一个打印一个。
标签:tmp,PAT,int,num,printf,B1017,20,include,margin 来源: https://www.cnblogs.com/tccbj/p/10359524.html