今天看见一贴子,求0,1,1,2,3,5.....的第300项,想到了这个,我看了牛人的回复,有点不懂,自己搞了个比较笨的方法,有什么改进的希望给位牛牛指点指点
char *GetAddResult(const char* a1, const char* a2, char* pRes)
{
const char* p = a1;
const char* q = a2;
while(*p != '\0') p++;
while(*q != '\0') q++;
p--;
q--;
int a = 0;
int b = 0;
int iAdd = 0;
int i = 0;
int num = 0;
while(1)
{
a = *p-'0';
b = *q-'0';
num = (a+b+iAdd) % 10;
iAdd = (a+b+iAdd)/10;
if(i == 0)
{
*(pRes+i) = num + '0';
if((strlen(a1) == 1) || (strlen(a2) == 1))
{
*(pRes+i+1) = iAdd;
break;
}
}
else if((p == a1) || (q == a2))
{
*(pRes+i) = (num + '0');
*(pRes+i+1) = iAdd;
break;
}
else
{
*(pRes+i) = (num + '0');
}
p--;
q--;
i++;
}
if((p == a1) && (q != a2))
{
q--;
i++;
while(q != a2)
{
*(pRes+i) += *q;
q--;
i++;
}
*(pRes+i) += *q;
}
else if((q == a2) &&(p != a1))
{
p--;
i++;
while(p != a2)
{
*(pRes+i) += *p;
p--;
i++;
}
*(pRes+i) += *p;
}
int size = strlen(pRes);
int tmp = 0;
for(int j = 0;j < size/2;j++)
{
tmp = *(pRes+j);
*(pRes+j) = *(pRes+size-j - 1);
*(pRes+size-j - 1) = tmp;
}
if(*pRes == 1) *pRes += '0';
return pRes;
}
我只尝试到了取第20000位,耗费很多时间.....
哦,对了,第一次发帖,有点小激动