3 回答

TA貢獻2021條經驗 獲得超8個贊
GNU Multiprecision庫是一個很好的庫!但是由于您說不允許使用外部庫,所以我認為唯一可能的方法是采用一個int數組,然后像用筆在紙上一樣將數字相乘!
這是我前一段時間寫的代碼。
#include<iostream>
#include<cstring>
int max = 5000;
void display(int arr[]){
int ctr = 0;
for (int i=0; i<max; i++){
if (!ctr && arr[i]) ctr = 1;
if(ctr)
std::cout<<arr[i];
}
}
void factorial(int arr[], int n){
if (!n) return;
int carry = 0;
for (int i=max-1; i>=0; --i){
arr[i] = (arr[i] * n) + carry;
carry = arr[i]/10;
arr[i] %= 10;
}
factorial(arr,n-1);
}
int main(){
int *arr = new int[max];
std::memset(arr,0,max*sizeof(int));
arr[max-1] = 1;
int num;
std::cout<<"Enter the number: ";
std::cin>>num;
std::cout<<"factorial of "<<num<<"is :\n";
factorial(arr,num);
display(arr);
delete[] arr;
return 0;
}
“ arr”只是一個整數數組,階乘是一個簡單的函數,會將給定的數字乘以“大數”。
希望這能解決您的查詢。
- 3 回答
- 0 關注
- 478 瀏覽
添加回答
舉報