我是靠谱客的博主 畅快花卷,这篇文章主要介绍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 空格分隔。

输入样例:

复制代码
1
2
123456789050987654321 7

输出样例:

复制代码
1
17636684150141093474 3

因为A是不超1000位的正整数,所以不好用整型数据存储,所以A用字符数组来存储每一位数,这就要用除法的原理一步步来求商 ,下面用1234/7来解释

1234/7每一位商数Q余数P
(第一位数:1)1/7

0(第一位商数为0时,说明

第一位数不够被除,不输出)

1
p*10+(下一位数:2)=1*10+2,12/715
p*10+(下一位数:3)=5*10+3,53/774
p*10+(下一位数:4)=4*10+4,44/762
所以1234/7=176余2

下面代码实现: 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(93)

评论列表共有 0 条评论

立即
投稿
返回
顶部