我是靠谱客的博主 鳗鱼饼干,这篇文章主要介绍A除以B(PAT),现在分享给大家,希望可以做个参考。

1.题目描述:

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

2.输入描述:

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

3.输出描述:

在1行中依次输出Q和R,中间以1空格分隔。

4.输入例子:

复制代码
1
2
123456789050987654321 7

5.输出例子:

复制代码
1
2
17636684150141093474 3

6.解题思路:

1. 定义字符串数组接收一个小于1000位的正整数;
2. 遍历输入的字符串,分为四种情况进行求商求余:

(一)A只有一位数,且该数<B,商为0,余为A
(二)A只有一位数,且该数>=B
(三)A为多位数,且遍历到的第i位数>=B,求A[i]的商和余,商值保存到数组Q中,余值赋值给A[i],遍历位置不继续递增,即i++,i–,遍历位置不动;
(四)A为多位数,且遍历到的第i位数<B,求A[i]和A[i+1]组成两位数的商和余,商值保存到数组Q中,余值赋值给A[i],遍历位置正常递增i++;

3.输出字符串数组Q和余数R。

7.源代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<stdio.h> #define N 1001 int main() { int i,j,B,R,num; char A[N]="",Q[N]=""; scanf("%s%d",A,&B); for(i=0,j=0;A[i]!='';i++) { if(A[i+1]!=''&&A[i]-48<B) { num=(A[i]-48)*10+(A[i+1]-48); Q[j]=(num/B)+48; A[i+1]=(num%B)+48; j++; } else if(A[i+1]!=''&&A[i]-48>=B) { Q[j]=((A[i]-48)/B)+48; A[i]=((A[i]-48)%B)+48; i--; j++; } else if(A[i+1]==''&&A[i]-48<B) { R=A[i]-48; Q[0]=0; } else if(A[i+1]==''&&A[i]-48>=B) { Q[j]=((A[i]-48)/B)+48; R=(A[i]-48)%B; } } printf("%s %d",Q,R); return 0; }

最后

以上就是鳗鱼饼干最近收集整理的关于A除以B(PAT)的全部内容,更多相关A除以B(PAT)内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部