大數 相加 相減 相乘)

2021-08-14 23:39:18 字數 2061 閱讀 8931

把乙個數當成乙個字串進行運算

大數相加:

#include 

#include

#include

char s1[2000];

char s2[2000];

void add1();

int main()

void add1()

}//去除前邊多餘的零,從第乙個不是零的位置輸出

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

if(num1[i]!=0)

break;

if(i==-1)

printf("0");

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

printf("%d",num1[i]);

printf("\n");

}

大數相減:

#include 

#include

char a[1005],b[1005];

void sub();

int main()

void sub()

else

if (flag==0)

int i, j;

int num1[1005];

int num2[1005];

memset(num1,0,sizeof(num1));

memset(num2,0,sizeof(num2));

//陣列中存的為字元0,把字元零轉化為數字0

for (i=len1-1,j=0; i>=0; i--)

num1[j++] = a[i] - '0';

for (i =len2-1,j=0; i>=0; i--)

num2[j++]= b[i] -'0';

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

}//去除前邊多餘的零,從第乙個不是零的位置輸出

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

if (num1[i])

break;

//如果「aif(flag==-1)

printf("-");

if(i >= 0)

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

printf("%d",num1[i]);

else

printf("0");

}

大數相乘:

藍橋杯 基礎練習 階乘計算

題目描述:輸出n的階乘,n<=1000。

解題思路(題意裡給出):

n!可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a[0]表示a的個位,a[1]表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的進製。首先將a設為1,然後乘2,乘3,當乘到n時,即得到了n!的值。

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int inf=0x3f3f3f3f;

const

double pi=acos(-1);

const

int mod=1e9+7;

const

int n=3e3;

int main()

}for(i=n-1; i>=0; i--) //從第乙個不為零的開始

if(a[i]) break;

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

printf("\n");

}return

0;}

大數相乘演算法(相加,相減)

所謂大數相乘,就是指數字比較大,相乘的結果超出了基本型別的表示範圍,所以這樣的數不能夠直接做乘法運算。假設有a和b兩個大數,位數分別為a和b。根據我們平常手動計算乘法的方式可以看出,最終的結果的位數c一定小於等於a b。由於數字無法用乙個整形變數儲存,很自然的想到用字串來表示一串數字。然後按照乘法的...

大數問題 相乘,相減,相加 C 實現

c 自帶的long long型別表示的最大值是9223372036854775807 19位 如果有兩個超過這個範圍的數進行運算,就不能使用c 編譯器自帶的 了。我們把這種大數用c 裡面的string型別進行處理,處理過程中要注意進製 借位 字元轉數字的問題。string add string st...

大數相加 相減

這裡直接貼 了,裡面有注釋 另外裡面還有乙個是 乘法的,乘法的再上一部落格就有提到了,讀者可以 clickhere 裡面 由於輸入的問題可能 有亂碼情況 具體的源 我放在 include using namespace std include include define max a,b a b a...