:facebook4:

ở đây mình làm bằng mảng cho đơn giản

nhưng bù lại thì sẽ tốn bộ nhớ, làm với số âm dc nhưng phức tạp và chỉ chia lấy phần dư

đây là code

2 số nguyên lớn bạn chỉ cần nhập vào số chữ số còn lại con số là ngẫu nhiên

muốn kết quả đẹp hơn thì sử dụng hàm "xoa0"

:think: thời gian ở đây sẽ RẤT LÂU nhưng bù lại dc cái đơn giản
Phép chia 2 số nguyên lớn V

[AH]

Mã:

#include<stdio.h>

#include<time.h>

#include<stdlib.h>

#include<conio.h>

#define MAX 90000

void test(int a[], int max)

{

printf("\n");

for ( int i = 0 ; i <= max ; i ++)

printf("%d ",a[i]);

}

void xoa0(int a[], int &m , int max)

{

m = max;

while(a[0] == 0)

{

for (int j = 0 ; j < m ; j ++)

a[j]=a[j+1];

m--;

}

}

int sosanh ( int a[], int b[] , int m)

{

int dem=0;

for (int i = 0 ; i <= m ; i++)

{

if(a[i]>b[i])

return 0;

if(a[i]<b[i])

return -1;

if(a[i]==b[i])

dem++;

}

if (dem == m+1)

return 1;

}

void tinhtoantru(int a[], int n, int b[], int m, int max1, int c[])

{

int c2[MAX];

for( int i = max1 ; i >= 1 ; i --)

c2[i]=b[i];

for( int i = max1 ; i >= 1 ; i --)

{

if (a[i] < b[i])

{

a[i] = a[i]+10;

c2[i-1]=c2[i-1]+1;

}

c[i]= a[i]-c2[i];

}

}

void chia1(int a[], int n, int b[], int m , int max1)

{

int dem=0;

int c1[MAX];

while (sosanh(a,b,max1) != -1)

{

tinhtoantru(a,n,b,m,max1,c1);

for ( int i = 0 ; i <= max1 ; i ++)

a[i] = c1[i];

dem++;

}

printf("\kq phep chia la %d",dem);

printf("\n");

printf("du la: ");

for ( int i = 0 ; i <= max1 ; i ++)

printf("%d ",a[i]);

}

int main()

{

int m,n,max1;

int a[MAX],b[MAX],c[MAX];

scanf("%d %d",&n,&m);

if( m > n)

max1 = m;

else max1 = n;

srand((int)time(NULL));

for ( int i = max1-n+1 ; i <= max1 ; i ++)

a[i] = rand()%9+1;

for ( int i = max1-m+1 ; i <= max1 ; i ++)

b[i] = rand()%9+1;

test(a,max1);

test(b,max1);

// xoa0(a,n,max1);

// xoa0(b,m,max1);

printf("\n\n");

chia1(a,n,b,m,max1);

char *_="%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c";

int __=3**_+5;

printf("\n\n\t\t\t\t");

printf(_,__+59,__-32,__-19,__-4,__-21,__-40,__+17,__-7,__-21,__-44,__-19,__-17,__-9,__-15,__-2,__+58);

getch();

}

[/AH]