大數處理之二(冪運算)

2022-07-29 04:51:14 字數 1477 閱讀 1446

對於冪運算來說,就是相同的幾個數相乘,改成大數處理問題,同樣可以轉化成兩個大數相乘問題,乘得的積作為乙個新數,再用這個新數與另乙個作積,這樣迴圈下去即可進行冪運算。

對於兩個大數該如何處理;

對於字串s1[100] 中存放第乙個大數, s2[100]中存放第二個大數;

定義兩個整型陣列 a[100] , b[100] ;

使得字串s1和s2能夠像列豎式一樣右對齊,並分別存入 a 和 b 中 。

然後進行雙重迴圈,使得其中也個陣列中的每乙個數值都與另乙個陣列相乘,對應的數值加到乙個新陣列sum中;

然後處理陣列sum,如果sum陣列中有數值超過十的,向前進一位,對這個數取餘後的結果重新存入陣列sum中;

這樣就實現了兩個大數相乘,結果存在乙個新的陣列中,在以這個陣列作為乙個新數,與另乙個相乘;

詳細**如下:

#include#include#include#includeusing namespace std ;

int main() ;

int a[6] = ;

int t = 0 ;

int len = strlen(r) ;

for(int i = len - 1 , p = 4 ; i >= 0 ; i--)

t = 6 - t ;

t = t * n ;

int j , k , kk , jj;

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

for(k = 4 , kk = 200 - (4 - j) ; k >= 0 ; k--)

sum[kk--] += ((a[j]) * (a[k])) ;

for(jj = 200 ; jj >= 1 ; jj--)

n-- ;

n-- ;

while(n--) ;

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

for(k = 200 , kk = 200 - (4 - j) ; kk >= 0 && k > 0 ;k--)

sum1[kk--] += ((a[j]) * (sum[k])) ;

for(jj = 200 ; jj >= 1 ; jj--)

for(int ii = 0 ; ii <= 200 ; ii++)

sum[ii] = sum1[ii] ;

}int start = 0 ;

int end = 200 ;

while(!sum[end])

end-- ;

while(start <= 199 && !sum[start])

bool flag = true ;

if(200 - t + 1 == start )

if(!flag)

else

}printf("\n") ;

}return 0 ;

}

大數處理之二(冪運算)

對於冪運算來說,就是相同的幾個數相乘,改成大數處理問題,同樣可以轉化成兩個大數相乘問題,乘得的積作為乙個新數,再用這個新數與另乙個作積,這樣迴圈下去即可進行冪運算。對於兩個大數該如何處理 對於字串s1 100 中存放第乙個大數,s2 100 中存放第二個大數 定義兩個整型陣列 a 100 b 100...

大數冪運算

大數冪運算 源於poj1001題目 http acm.pku.edu.cn judgeonline problem?id 1001 mul singleint const string s1 int n 2.迴圈利用大整數加法計算大整數乘積 string mul int const string s...

大數運算 冪次方運算

以下演算法計算n的m次方 m的定義域是 1,2 31 n的定義域是 0,65535 原理就是按位相乘,處理進製 include include include void main void std vectorvecnum 1,n 用vector儲存大數,首位賦n for int i 0 i m 1...