之前只會求高精度的階乘,不知道他們怎麼求和,經過別人的知道(特地感謝某的博主的指導),然後知道了這個新的求階乘和的方法
首先先看一下之前我是怎麼求階乘的
就是類似於我之前求斐波拉契數列的時候求的方法
然而這種方法,不好來求階乘和
#include #include int a[10010][10010];
int main()
while(cnt!=0)
}for(i=d;i>=0;i--)
printf("%d",a[n][i]);
printf("\n");
}return 0;
}
因此,為了更好的求階乘和,下面是一種新的方法,求階乘
#define inf 0x3f3f3f3f
#include#include#include#include#include#includeusing namespace std;
int a[10010];
int main()}}
for(i=d;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}return 0;
}
因此,下面就是理所當然的階乘和的解決方法啦
#define inf 0x3f3f3f3f
#include#include#include#include#include#includeusing namespace std;
int a[10010];
int sum[10010];
int main()
}//上面求玩階乘,下面就是求和的步驟,精度堆疊的計算方法很像
for(i=0; i<=d; i++)
sum[i]+=a[i];
for(i=0; i<=d; i++)}}
for(i=d; i>=0; i--)
printf("%d",sum[i]);
printf("\n");
}return 0;
}
於是這個問題就解決了啊,**應該不是很複雜biu~~ 高精度階乘
問題描述 輸入乙個正整數n,輸出n 的值。其中n 1 2 3 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相...
高精度階乘
問題描述 輸入乙個正整數n,輸出n 的值。其中n 123 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的...
階乘和(高精度演算法)
對於自然數n的階乘,當n比較小時,可以32位整數int範圍內準確表示 例如12 479001600 2147483647 231 1 而20 2432902008176640000 9223372036854775807 263 1 可以在64位整數long long int範圍內準確表示 但是 n...