码迷,mamicode.com
首页 > 其他好文 > 详细

HPU--1091 N!的位数

时间:2017-08-02 10:04:52      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:pre   防止   多少   整数   log   double   inf   status   center   

1091: N!的位数 [数学]

时间限制: 1 Sec 内存限制: 128 MB

提交: 97 解决: 12 统计

题目描述

我们知道n!=n*(n-1)*(n-2)*…*2*1。

那么给定一个n,n!是几位数呢。

更困难的,n!的k进制数有多少位呢。

输入

第一行是一个数T(1≤T≤50000),代表T组测试数据。

每一组测试数据占一行,有两个整数n(0 ≤ n ≤ 10^6),k(2≤k≤1000)。

输出

对于每组测试数据,输出n!k进制数的位数。

样例输入

2
3 10
3 2

样例输出

1
3
代码:

 N!=1*2*3*4*5*............*N;

 lgN!=lg1+lg2+lg3+lg4+lg5+....................+lgN;

 (int)(a[n]/log(k))+1  k进制的位数;

 1 #include<stdio.h>
 2 #include<math.h>
 3 double a[1000000+10];
 4 int main()
 5 {
 6     int t,n,k;
 7     int i;
 8     double m=0.0;
 9     for(i=1;i<=1000000+10;i++)   //打表防止超时
10        {m+=log(i);
11            a[i]=m;
12        }
13     scanf("%d",&t);
14     while(t--)
15     {scanf("%d%d",&n,&k);  //这个输入输出放在表的后面就不用每次输入都打表了
16      
17      
18      
19       printf("%d\n",(int)(a[n]/log(k))+1); 
20         
21     }
22     return 0;
23 }

 

HPU--1091 N!的位数

标签:pre   防止   多少   整数   log   double   inf   status   center   

原文地址:http://www.cnblogs.com/hss-521/p/7271900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!