我是靠谱客的博主 畅快花卷,最近开发中收集的这篇文章主要介绍1017 A除以B 计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
因为A是不超1000位的正整数,所以不好用整型数据存储,所以A用字符数组来存储每一位数,这就要用除法的原理一步步来求商 ,下面用1234/7来解释
1234/7 | 每一位商数Q | 余数P |
(第一位数:1)1/7 | 0(第一位商数为0时,说明 第一位数不够被除,不输出) | 1 |
p*10+(下一位数:2)=1*10+2,12/7 | 1 | 5 |
p*10+(下一位数:3)=5*10+3,53/7 | 7 | 4 |
p*10+(下一位数:4)=4*10+4,44/7 | 6 | 2 |
所以1234/7=176余2 |
下面代码实现:
#include<stdio.h>
#include<string.h>
int main()
{
char A[1001] = { 0 };
int B, Q, R, len, i, temp;
scanf("%s %d",A,&B);
len = strlen(A);
temp = A[0] - '0';
for (i = 0;i < len;i++)
{
Q = temp / B;
R = temp % B;
temp = R * 10 + (A[i + 1] - '0'); //余数*10+下一位的数
if (i == 0 && len == 1 && Q == 0) //当A只有一位数且商为0时
printf("%d", Q);
else if (i == 0 && Q == 0) //当第一位商数是0时不进行输出
continue;
else
printf("%d", Q); //打印每一位商数
}
printf(" %d", R);
return 0;
}
最后
以上就是畅快花卷为你收集整理的1017 A除以B 计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R的全部内容,希望文章能够帮你解决1017 A除以B 计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复