對於冪運算來說,就是相同的幾個數相乘,改成大數處理問題,同樣可以轉化成兩個大數相乘問題,乘得的積作為乙個新數,再用這個新數與另乙個作積,這樣迴圈下去即可進行冪運算。
對於兩個大數該如何處理;
對於字串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...