求位数的话把这个数取10的对数就行了。至于求阶乘的话,如果n不是很大可以直接来算,当n比较大的时候可以用斯特林公式来求
int main(){ int num=0;printf("请输入要求阶乘的数:");scanf("%d",&num);jieCheng(num);//调...
的位数,num为位数scanf("%d",&n);if(n==0){num=1;}else{num=(int)((0.5*log(2*pi*n)+n*log(n)-n)/log(10))+1;}printf("%d",num);}使用斯特林公式,n!约等于sqrt(2*pi*n)*(n/e)^n,如不理解需更多信息或者有使用高精度(long long不够)的需求继续追问 ...
一亿的阶乘一共 756,570,557 位数字, 我们试着来计算一下十亿的阶乘 10^9! ? 我的算法, 在32线程下, 计算 10^9! 需要436秒 而 @Betty 的程序需要534秒. (都不含进制转换和输出) 不过虽然我比他快一点, 但他的算法[4]在单线程下是比我的算法更好的. 写在后面. 虽然目前我这个方法是目前知乎最...
{intn;//阶乘位数doublea; scanf("%d",&n); factorial1(n); printf("\n"); printf("double:\n"); factorial2(n);return0; } 输出结果: 可以看到 factorial2 函数输出的内容是个 inf,而 factorial1 使用的数组输出则完美的输出了内容。而可不可以使用DP来解决大数的问题,笔者愚钝,只是觉得行,在这里...
计算阶乘的位数 poj 1423 #include 斯特林公式的应用num=floor(log10(N)+1); 斯特林公式如下: 带入公式即可。(其中floor可以用(int)代替,但不能用printf输出%.0f的浮点数,因为后者会自动四舍五入) #include<stdio.h> #include<math.h> #define PI 3.141592653589793239...
int data[6]; // 存储6位阶乘结果,最高位为符号位,其余5位为数值位,共64位整数范围足够表示大部分阶乘结果了,如果需要更大范围,可以增加位数。 } BigInt; void bigInt_init(BigInt *a) { a>data[0] = a>data [1] = a>data [2] = a>data ...
C语言实现高精度(大位数)阶乘,1.进位ints=c[j]*i+jw;jw=s/10;c[j]=s%10;源码#include<stdio.h>#include<string.h>#defineMax3000vctorial(intn){i
n的阶乘就是从1到的累积,所以可以通过一个for循环,从1到n依次求积即可。参考代码:include "stdio.h"int main() { int n,i,s=1;scanf("%d",&n);for(i=1;i<=n;i++)//for循环求累积 s=s*i;printf("%d\n",s);return 0;} / 运行结果:(例如求5的阶乘)5 120 / ...
while(s/10) { s = s / 10; } printf("%d", s); 算出来n!后的s,用以上代码就能出来最高位数了,请采纳,谢谢