怎麼用陣列完成兩個超長的正整數乘法

2025-03-02 20:20:08 字數 2784 閱讀 1739

1樓:匿名使用者

/此程式實現了兩個大整數的乘法,注:整數用二進位表示。即每一位都是神老0或1表示渣瞎或。

例如:100011 1011101//程式中先輸入被乘數和乘數的位數,然後動態申請空間,以字元的形式來處理長整數的每一位。//模擬計算機乘法的實現,將整數乘法轉換為整數加法來實如伍現。

#include //將陣列元素左移x位,低位補0

void leftmove(char c,int len,int x)

if(x==0)

return ;

elsefor(int i=0;i=0;i--)

c[i+x]=c[i];

for(int j=0;j=0;i--)

temp=(a[i]-'0')+s[i]-'0')+c;

if(temp==1)

s[i]='1';

c=0;if(temp==2)

s[i]='0';

c=1;if(i==0)

for(int j=len-1;j>=0;j--)最高位有進位。

s[j+1]=s[j];

s[j+1]='1';

len+=1;

int main()

int length,i;

printf("請輸入被乘數、乘數的位數:");

int n1,n2;

scanf("%d%d",&n1,&n2);

char* a=new char[n1]; 被乘數。

char* b=new char[n2]; 乘數 char* s=new char[n1+n2]; 積。

for(i=0;i=0;i--)

if((b[i]-'0')=1)

leftmove(a,n1,n1-1-i); 若為1,將陣列a左移i位,低位補0

rightmove(s,length,n2-i-1); 將s陣列右移i位,高位補0

add(a,s,length); 將陣列a各位+到s上。

for(int j=0;jprintf("%c",s[j]);

printf("");return 0;

2樓:匿名使用者

最簡單的方法,就是模擬手算乘法,小學生都會的。

3樓:匿名使用者

高精度演算法。您是使用什麼語言的呢。?

40是用什麼兩個陣列(乘法)

4樓:網友

找它的因數不就知道了!都是乘法。

用c語言程式設計「使用陣列完成兩個超長(長度小於100)正整數的加法。」

5樓:嬉鬧

用字串實現,額呵呵。

使用陣列完成兩個超長(長度小於100)正整數的加法的源**。。無錯誤的

6樓:匿名使用者

看到這個問題,我囧++。下面隨便寫了乙個,有興趣的話自己寫個大整數類吧(加減乘除、冪、模、階乘。//大整數加法,只考慮正數。

#include

#include

using namespace std;#define maxnum 110

int arr1[maxnum], arr2[maxnum];

string s1, s2;int main()j = -1;

for(i=;i>=0;--i)

for(i=0;i= 10)

bstartoutput = false;

for(i=;i>=0;--i)else if(arr1[i] != 0)

if(bstartoutput == false)cout<<0;

cout輸入樣例。

輸出樣例。output sample:

c語言怎樣用陣列來運算超長的整數?

7樓:憑巨集朗

兩種辦法,一種用long long,這有八個bytes應該夠用了。另一種就是大整數的乘法,外面已經有人寫過了,隨便一搜便知。不懂再問。

8樓:網友

特別長的像你那種,可使用。

long long int(最長的整型變數了)輸出時用格式控制符%i64d // 是(i 的大寫加64d,別寫成l的小寫了)

特別特別特別長的,long long int也裝不下的,用字元陣列處理,那麼如何加減乘除就要你花一番心思了。

求100的階乘,用c語言中的陣列怎麼來求啊?能不能用陣列模擬乘法來算,再用上遞迴來寫一下程式

9樓:匿名使用者

又是你呀。不過說真的,很少有人會幫你寫的,高精畢竟太煩了。。你先試著自己寫一些高精的,有點感覺後,就自己試著寫。如兩個數相乘的。。。還得靠自己呀。。

有問題可以繼續問我,646203846。。。

10樓:匿名使用者

我用c++實現了這種演算法不過思路可以告訴你你建立3個足夠長的long陣列(或3條long鏈),每個陣列(節點)裡面存乙個不大於10000的正整數,然後利用豎式的演算法就可以計算出來,具體的計算你可以參考我的largedecimal運算。

輸入乙個正整數n(1~9),輸出九九乘法表前n*n項(將乘數、被乘數和乘積放入乙個二維陣列中,在輸

11樓:網友

for(i=0;i<=n;i++)

改成printf("");

for(i=1;i<=n;i++)

因為第一行你之前輸過了,所以只要從i=1開始就行了。

用遞迴法求p m n m nm與n為兩個正整數且要求mn。當m 12,n 8時

include stdio.h double fun double m,double n else return 1 int main c語言程式設計 m和n為兩個整數且m大於n求p m n m n 在下方的空白處填寫 float fun int m,int n for i 1 i n i 計算n的...

設陣列,每個元素都是不超過兩位數的正整數,試程式設計統計該數

一樓的演算法好像有點不對,比如a 10 則b 1 但是下邊的又是b 9 我寫了一個,你試下,不懂可直接問我,include include void main n,i printf 請輸入這個陣列的大小 scanf d n a int malloc n sizeof int printf 請輸入這個...

c語言程式設計,輸入兩個正整數m和n,求其最大公約數和最小公倍數

main p n m p是原來兩個數n,m的乘積.while m 0 求兩個數n,m的最大公約數.printf its maxgongyueshu d n n 列印最大公約數.printf its mingongbeishu d n p n 列印最小公倍數.基本原理如下 用歐幾里德演算法 輾轉相除法...