PAT 乙级 1017 A除以B

PAT 乙级 1017 A除以B


题目如下:

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

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

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

123456789050987654321 7

输出样例:

17636684150141093474 3


#include<stdio.h>
#include<string.h>
int main()
{
    
    
	char A[1001],ANS1[1001];
	int B,ANS2,i,l,j=0,C=0,D,c=0;
	scanf("%s %d",A,&B);//输入A和B
	l=strlen(A);
	for(i=0;i<l;i++)
	{
    
    
		C=C*10+((int)A[i]-'0');
		if(C/B!=0)//即C大于B时
		{
    
    
			D=C/B;//D为C/B的商
			ANS1[j]=D+'0';
			j++;
			C=C%B;//C为C/B的余数
			c=1;
		}
	else if((C==0&&c!=0)||(C<B&&c!=0))//如果C小于B但是ANS1[j]不为第一个数时
		{
    
    
			ANS1[j]='0';
			j++;
		}
	}
	if(l==1&&c==0)//当A<B,商为零时
	{
    
    
		ANS1[0]='0';
		j++;
	}
	ANS2=C;//ANS2为余数
	for(i=0;i<j;i++)
	{
    
    
		printf("%c",ANS1[i]);//输出商
	}
	printf(" %d\n",ANS2);//输出余数
	return 0;
 } 

猜你喜欢

转载自blog.csdn.net/qq_46586095/article/details/105030327