我是靠谱客的博主 畅快花卷,这篇文章主要介绍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
2123456789050987654321 7
输出样例:
复制代码
117636684150141093474 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 |
下面代码实现:
复制代码
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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复