#include <bits/stdc++.h> using namespace std; const int MX = 1e5; // a被除数;b除数;c商;tmpb为b的临时数组,只是在b增加长度时加上前导0 // 令数组下标为0的位置存储数组的有效长度 char sa[MX + 10], sb[MX + 10]; int a[MX + 10], b[MX + 10], tmpb[MX + 10], c[MX + 10]; // 将arr1[]转存到临时的arr2中,向右移dest位,补上前导0 void cpy_arr_int(int arr1[], int arr2[], int dest) { for (int i = 1; i <= arr1[0]; i++) { arr2[i + dest] = arr1[i]; } arr2[0] = arr1[0] + dest; } //比较两个数组数字大小 int cmp_arr_int(int arr1[], int arr2[]) { //先比位数 if (arr1[0] > arr2[0]) { return 1; } if (arr1[0] < arr2[0]) { return -1; } //位数一样,再比各位数 for(int i = 1; i <= arr1[0] ; i++) { if(arr1[i] > arr2[i]) return 1; if(arr1[i] < arr2[i]) return -1; } //如果相等就return 0; return 0; } //数组相减 void sub_arr_int(int arr1[],int arr2[]) { for(int i = arr1[0]; i >= 1; i--) { if(arr1[i] < arr2[i])//借位 { arr1[i] += 10; arr1[i-1]--; } arr1[i] -= arr2[i]; } } //输出 void print_arr(int arr[]) { bool flag = 0; for(int i = 1; i <= arr[0]; i++) { //不输出前导0 if(flag == 0 && arr[i] == 0) { continue; } flag = 1; printf("%d",arr[i]); } if(!flag) { printf("0"); } printf("\n"); } int main() { scanf("%s%s", sa, sb); a[0] = strlen(sa); b[0] = strlen(sb); c[0] = a[0] - b[0] + 1; //字符数组数字转存 for (int i = 1; i <= a[0]; i++) { a[i] = sa[i - 1] - '0'; } for (int i = 1; i <= b[0]; i++) { b[i] = sb[i - 1] - '0'; } // 模拟除法运算 for (int i = 1; i <= c[0]; i++) { memset(tmpb, 0, sizeof(tmpb)); cpy_arr_int(b, tmpb, i - 1); a[0] = tmpb[0]; while (cmp_arr_int(a, tmpb) >= 0) { sub_arr_int(a,tmpb); c[i]++; } } print_arr(c); print_arr(a); return 0; }