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
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *A, *Q;
int R, B;
int i, len, divident, consult;
A = (char *)malloc(sizeof(char) * 1000);
Q = (char *)malloc(sizeof(char) * 1000);
scanf("%s%d", A, &B);
len = strlen(A);
divident = A[0] - '0';
consult = divident / B;
R = divident%B;
Q[0] = consult + '0';
if (consult == 0)//第一次商为0要特殊处理
{
for (i = 1; i < len; i++)
{
divident = R * 10 + A[i] - '0';
consult = divident / B;
R = divident%B;
Q[i-1] = consult + '0';//i-1就是把第0号单元的0值覆盖
}
if (i == 1)//没有进入for循环的情况
Q[i] = '\0';
else//进入啦的情况
Q[i-1] = '\0';
}
else//第一次商不为0正常进行
{
for (i = 1; i < len; i++)
{
divident = R * 10 + A[i] - '0';
consult = divident / B;
R = divident%B;
Q[i] = consult + '0';
}
Q[i] = '\0';
}
printf("%s %d", Q, R);
return 0;
}
截图: