PAT乙级题库- A除以B 大数除法

题目描述
本题要求计算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>
#define max 1000

int main()
{
	char a[max+2],quo[max+2];
	int i,b,rem,len;
	while(scanf("%s %d",a,&b)!=EOF)
	{
		len=strlen(a);

		for(rem=0,i=0; i<len; i++)
		{
			rem=rem*10+a[i]-'0';
			quo[i]=rem/b;
			if(quo[i] == 0)
			{
				continue; // 不够除直接右移
			}else{
				rem=rem-quo[i]*b;
			}
		}

		for(i=0; i<len; i++)
		{	
			if(i==0 && quo[i]==0) continue;
			printf("%d",quo[i]);
		}
		printf(" %d",rem);
	}
	system("pause");
}
发布了35 篇原创文章 · 获赞 2 · 访问量 913

猜你喜欢

转载自blog.csdn.net/qq_45735810/article/details/103603108