PAT B 1017 A除以B(20 分) C、Python
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例:123456789050987654321 7
输出样例:17636684150141093474 3
用Python写很简单,直接算就行。
def function(A,B):
Q,R=divmod(A,B)
str1=str(Q)+' '+str(R)
return(str1)
A,B=map(int,input().split(' '))
print(function(A,B))
如果需要用C语言写,要模拟除法的过程。我们用了一个数组存储被除数。每次取出被除数最前面的一位数去除以除数得到商,如果所得的数字大于0就直接输出,如果小于零说明不够除,我们从后面再取一位。及将当前数字×10再加上后一位数字,再拿去除以除数。
题目说A不超过1000位,那么A的长度可能是1到1000。要考虑长度只有一位的情况。
#include<stdio.h>
#include<string.h>
int main(){
char num[1001];//这个字符串数组存储被除数
int len;
int divisor;//divisor是除数的英文
int tmp;
int quotient;//quotient是商的英文
int i;
scanf("%s %d",num,&divisor);
len=strlen(num);
quotient=(num[0]-'0')/divisor;
if((quotient!=0&&len>1)||len==1){
printf("%d",quotient);
}
tmp=(num[0]-'0')%divisor;
for(i=1;i<len;i++){
quotient=(tmp*10+num[i]-'0')/divisor;
printf("%d",quotient);
tmp=(tmp*10+num[i]-'0')%divisor;
}
printf(" %d",tmp);
return 0;
}