#define MAXINT 1000
#define MAX 200
int num1[MAX+10];
int num2[MAX+10];
unsigned int total[MAX+10];
int Sub(int a,int b)
{
if (b>=a)
{
if (a==b)
return 0;
else
return -1;
}
int i = 0;
for (;a>b;i++)
{
b++;
}
return i;
}
CString bigDiv(char* str1,char* str2)
{
memset(num1,0,sizeof(num1));
memset(num2,0,sizeof(num2));
memset(total,0,sizeof(total));
int len,index;
len = strlen(str1);
index = 0;
for (int i=len-1;i>=0;i--)
{
num1[index++] = str1[i]-'0';
}
len = strlen(str2);
index = 0;
for (int i=len-1;i>=0;i--)
{
num2[index++] = str2[i]-'0';
}
if (strlen(str2)>strlen(str1))
{
return _T("");
}
int len1,len2,length;
len1 = strlen(str1);
len2 = strlen(str2);
length = Sub(len1,len2);
while (1)
{
for (int i=len1-1;i>=0;i--)
{
if (num1[i])
{
len1 = i+1;
break;
}
}
len = Sub(len1,len2);
int index = 0;
bool flag = false;
for (int i=len1-1;i>=len;i--)
{
if (num1[i]<num2[i-len])
{
flag = true;
break;
}
if (num1[i]>num2[i-len])
{
break;
}
}
if (flag)
len--;
if (len==-1)
break;
while (++index)
{
bool flag = false;
for (int i=len1-1;i>=len;i--)
{
if (num1[i]<num2[i-len])
{
flag = true;
break;
}
if (num1[i]>num2[i-len])
{
break;
}
}
if (flag)
{
index--;
break;
}
for (int i=len;i<len1;i++)
{
num1[i] -= num2[i-len];
if (num1[i]<0)
{
num1[i] += 10;
num1[i+1]--;
}
}
}
if (index==0)
break;
else
total[len] = index;
}
bool flag = false;
CString str,strData=_T("");
for (int i=length;i>=0;i--)
{
if (flag||total[i])
{
flag = true;
str.Format(_T("%d"),total[i]);
strData += str;
}
}
if (!flag)
{
return _T("0");
}
return strData;
}
char *CStringToChar(CString str)
{
const size_t strsize=(str.GetLength()+1)*2; // 宽字符的长度;
char * pstr= new char[strsize]; //分配空间;
size_t sz=0;
wcstombs_s(&sz,pstr,strsize,str,_TRUNCATE);
return pstr;
}