-
描述
-
N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)?
-
输入
-
首行输入n,表示有多少组测试数据(n<10)
随后n行每行输入一组测试数据 N( 0 < N < 1000000 )
输出
- 对于每个数N,输出N!的(十进制)位数。 样例输入
-
3 1 3 32000
样例输出
-
1 1 130271
代码:
-
#include<stdio.h> #include<math.h> int strrling(int n) { const double p=acos(-1.0); double c1=log10(2*p); double c2=0.434294481903; double c3=log10(1.0*n); int s=1; if(n>3) s=(int)((c3+c1)/2+n*(c3-c2)+1); return s; } int main() { int n; scanf("%d",&n); while(n--) { int m; scanf("%d",&m); printf("%ld\n",strrling(m)); } }
总结:大数的阶乘位乘公式。strrling函数。本来不会,特此记下。
-
首行输入n,表示有多少组测试数据(n<10)
数的长度
最新推荐文章于 2021-07-27 16:50:03 发布