字串版的數字相乘...
寫完覺得我不但不會寫扣, 我還不會做乘法吧 (倒地)
char * multiply(char * num1, char * num2){
if (num1[0]=='0' || num2[0]=='0')
return "0";
int len1 = strlen(num1);
int len2 = strlen(num2);
int i,j,k=0;
int maxLen = len1 + len2;
int *calculate = malloc (sizeof(int)*(maxLen));
memset(calculate,0,sizeof(int)*(maxLen));
for (i=0;i<len1;i++)
{
for(j=0;j<len2;j++)
{
int v1 = (num1[len1-i-1]-'0');
int v2 = (num2[len2-j-1]-'0');
calculate[i+j] += v1*v2;
}
}
char *retChar = malloc (sizeof(char)*(maxLen+1));
retChar[maxLen]='\0';
for (i=0;i<maxLen-1;i++)
{
int scale = calculate[i]%10;
calculate[i+1] += calculate[i]/10;
retChar[maxLen-i-1]= scale + '0';
}
retChar[maxLen-i-1]= calculate[i] + '0';
for (j=0;j<maxLen;j++)
if(retChar[j]!='0')
break;
return retChar+(sizeof(char)*j);
}
奇怪為什麼別人的扣可以那麼精簡, 這就是天才與凡人的差異吧屋屋屋
其實裝數字的array應該要可以倒過來寫才對
並且它似乎可以在一輪的回圈裡就把往上的加加做完而只留下餘數
不過我累了XD 這題先這樣吧...為何medium搞的像hard 一樣呢?!
糟了一個糕啊><
p2. v1 v2 那裡雖然縮成一行比較美麗, 但好像通常比較花時間?!anyway ...
沒有留言:
張貼留言