如果我們用int或double等進行乘法運算是有位數和精確度的限制,如何突破這種限制呢?當然只能自己寫乙個乘法運算。
如果我們用筆和紙進行乘法運算是沒有位數和精確度限制的,那麼我們是否可以模擬用筆和紙做乘法運算呢?在一定範圍內是可以。首先我們可以肯定,一位數乘一位數是可以實現的,然後我們可以設定兩個char陣列a[n]和b[n]來個記錄兩個n位數,無論是小數還是整數,然後設定乙個int陣列c[2n]來記錄結果。注意:n位數乘m位數的結果必定是在n+m位數之內。計算過程就是,a[n]和b[n]中,每兩個數的相乘,將結果放在c[2n]中的相應位置,最後進行滿10進1的計算得到結果。下面是**:
#include #include #include int main(void)
; char b[1024] = ;
int c[2048] = ;
int an, bn;
scanf("%s", a);
scanf("%s", b);
an = strlen(a);
bn = strlen(b);
// 捨去末尾的 0
for (int i = an - 1; i >= 0; i--)
} for (int i = bn - 1; i >= 0; i--)
} // 計算小數點的位數及捨去小數點
int ap = 0, bp = 0;
if (strchr(a, '.'))
ap--;
an--;
} if (strchr(b, '.'))
bp--;
bn--;
} int cp = ap + bp;
// 乘法計算
for (int i = 0; i < bn; i++)
} // 滿10進1
for (int i = 0; i < an + bn; i++)
// 輸出及插入小數點
int start = 0;
for (int i = an + bn - 1; i >= 0; i--)
printf("%d", c[i]);
} } //system("pause");
return 0;
}
測試:
不限制位數的大數乘法
include include using std cout using std cin using std string using std ostream using std istream class bignum bignum string v valuestr v string size ...
如何突破區域網限制
如何突破區域網限制,需要分限制情況進行說明 一 單純的限制某些 不能訪問,網路遊戲 比如聯眾 不能玩,這類限制一般是限制了欲訪問的ip位址。對於這類限制很容易突破,用普通的http 就可以了,或者socks 也是可以的。現在網上找http 還是很容易的,一抓一大把。在ie裡加了http 就可以輕鬆訪...
突破wap閘道器限制
解決思路 在wap閘道器和檔案伺服器之間加一層 伺服器,閘道器請求過來只到 伺服器,而不會到真正訪問到你的資源你伺服器。伺服器按照客戶端的請求引數每次去檔案伺服器上拿取檔案。技術關鍵點 1 伺服器與檔案伺服器之間連線的建立 2 輸入流和輸出流,位元組偏移量的設定 伺服器 3 伺服器輸出檔案型別 實現...