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

【题目链接】

本题要求计算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 }

 

你可能感兴趣的:(level)