PAT (Basic Level) Practise:1017. A除以B (20)

时间:2014-12-20 15:28:16   收藏:0   阅读:202

【题目链接】

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

输入格式:

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

输出格式:

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

输入样例:

123456789050987654321 7

输出样例:

17636684150141093474 3

 

提交代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 #define MAX_LEN            (1024)
 5 
 6 void division(char *str, int n, char *dest, int *r)
 7 {
 8     int div, q;
 9     int k, i, len = strlen(str);
10     int flag = 0;
11     
12     div = 0;
13     k = 0;
14     for(i = 0; i < len; i++)
15     {
16         div *= 10;
17         div += str[i] - 0;
18         q = div / n;
19         if(q > 0)
20         {
21             dest[k++] = q + 0;
22             div = div % n;
23             flag = 1;
24         }
25         else if (q == 0 && flag != 0)
26         {
27             dest[k++] = q + 0;
28             div = div % n;
29         }
30     }
31     if(k == 0)
32     {
33         dest[k++] = 0;    
34     }
35     dest[k] = \0;
36     *r = div;
37 }
38 
39 int main(void)
40 {
41     char dest[MAX_LEN];
42     char str[MAX_LEN];
43     int n, r;
44     
45     //printf("input str: \r\n");
46     scanf("%s", str);
47     //printf("input n: \r\n");
48     scanf("%d", &n);
49     //printf("%s / %d =\r\n", str, n);
50     
51     memset(dest, 0x00, sizeof(dest));
52     division(str, n, dest, &r);
53     printf("%s %d", dest, r);
54     return 0;
55 }

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!