hdu 1141 Factstone Benchmark(数学:计算)

来源:互联网 发布:unix网络编程pdf下载 编辑:程序博客网 时间:2024/04/28 10:08

所要求的是最大的n使得n! < 2^x

则找到log(n!) < x*log(2)即可

代码如下:

#include <math.h>#include <stdio.h>#define MAXN 50int n, i, j, a, b[MAXN];double sum;void init() {    for(i=0; i<25; ++i) {        a = pow(2, i+2);        sum = 0.0;//浮点数        for(j=1; ; j++) {            sum += log(j);            if(a*log(2) <= sum) {                b[i] = j;                break;            }        }    }}int main(void) {    init();    while(scanf("%d", &n), n) {        printf("%d\n", b[(n-1960)/10]-1);    }    return 0;}

0ms代码如下:

#include <math.h>#include <stdio.h>int a[] = {3, 5, 8, 12, 20, 34, 57, 98, 170, 300,            536, 966, 1754, 3210, 5910, 10944,             20366, 38064, 71421, 134480, 254016};int n;int main(void) {    while(scanf("%d", &n), n) {        printf("%d\n", a[(n-1960)/10]);    }    return 0;}


0 0
原创粉丝点击