首页 > 代码库 > PAT (Basic Level) Practise:1017. A除以B (20)

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

【题目链接】

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

 

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