time limit: 3 second
memory limit: 2 mb
對於階乘函式,即使自變數較小,其函式值也會相當大。例如: 10!=3628800 25!=15511210043330985984000000 若用integer型資料表示階乘,最多僅可用7!,用longint型別型別亦只能到12!。設計乙個程式,當鍵入乙個正整數n(1<=n<=100)時,輸出n!的精確值。
如果n的值不在規定的範圍,將輸出「error」。
輸入檔案中只乙個數字,表示要計算的n的值(1<=n<=100)。
輸出n!的精確值
1212!=479001600
【題解】
高精度*單精度。乘的時候要記錄進製資訊。然後處理進製即可。不斷更新數字的長度。最後倒敘輸出
【**】
#include #include const int maxn = 500;
int n,a[maxn],la = 1;
void input_data() //輸入資料
for (int i = 2; i <= maxn;i++)
a[i] = 0;
a[1] = 1; //先置1方便後面乘
}void get_ans()
while (x > 0) //如果進製數字》0則 數字的位數可以增加 不斷增加即可
}}void output_ans()
int main()
求n的階乘的精確值
斯特林公式可以求出n!的近似值,但是如果需要求精確值的話,就要採取另外的辦法了。當n 1000的時候,可以直接模擬求階乘,用乙個陣列儲存階乘的每一位,大概3000的陣列就行。程式如下 include include define n 3000 int f n 儲存階乘的位數 int main ret...
9112 求2的n次方的精確值
time limit 1 second memory limit 2 mb 問題描述 求2 n的精確值。n由使用者輸入,0 n 3232。輸入只有一行,乙個正整數n。輸出為計算的結果,最後用回車結束。8256 換行 題解 這是個單精度乘高精度的問題,每次在做乘方的時候,把當前算出的結果的每一位都乘上...
求2 22 222 n個2)的精確值
解題思想 按照從低位到高位的順序,把各個被加數的位上的數值相加並加上比該位更低位向該位的進製,取餘求出該位上的餘數,取整求出該位像比它高一位的進製。重複上述步驟,直至求出和的所有位。方法一 include stdio.h include stdlib.h include string.h int c...