ECNU_OJ_1007

来源:互联网 发布:特斯拉和比亚迪 知乎 编辑:程序博客网 时间:2024/06/06 04:39

N!的最高位

Time Limit:1000MS Memory Limit:30000KB
Total Submit:2241 Accepted:365

Description

求N的阶乘的最高位数。
例如:
5!=120,所以最高位为1
10!=3628800,所以最高位为3

Input

每个数据包含一行,每行有一个整数N(0<=N<=10000000)

Output

对于每个测试数据,输出N!的最高位数字

Sample Input

5
10

Sample Output

1
3

Source

EOJ

#include <stdio.h>#include <math.h>//stirling公式#define pi 3.1415926535898#define e 2.718281828459int main(int argc, char** argv){    int n;    while(scanf("%d", &n) != EOF)    {        double temp;        temp = (0.5 *log(2*pi*n) + n*(log(n) - log(e))) / log(10.0);        temp -= (int)temp ;        temp = exp(temp * log(10.0));        switch(n)        {        case 0:        case 1:            printf("1\n");            break;        case 2:            printf("2\n");            break;        case 3:            printf("6\n");            break;        case 7:            printf("5\n");            break;        case 8:            printf("4\n");            break;        default:            printf("%d\n",(int)temp);            break;        }    }    return 1;}
0 0
原创粉丝点击