zoukankan      html  css  js  c++  java
  • LightOJ 1045

    Factorial of an integer is defined by the following function

    f(0) = 1
    f(n) = f(n - 1) * n, if(n > 0)
    

    So, factorial of 5 is 120. But in different bases, the factorial may be different. For example, factorial of 5 in base 8 is 170.

    In this problem, you have to find the number of digit(s) of the factorial of an integer in a certain base.

    Input

    Input starts with an integer T (≤ 50000), denoting the number of test cases.

    Each case begins with two integers n (0 ≤ n ≤ 106) and base (2 ≤ base ≤ 1000). Both of these integers will be given in decimal.

    Output

    For each case of input you have to print the case number and the digit(s) of factorial n in the given base.

    Sample Input

    5
    5 10
    8 10
    22 3
    1000000 2
    0 100
    

    Output for Sample Input

    Case 1: 3
    Case 2: 5
    Case 3: 45
    Case 4: 18488885
    Case 5: 1
    

    题目大意就是问N的阶乘在m进制下的位数。

    对于这个题直接就是答案可能直接就出来了$int(log_m(n*(n-1)*(n-2)*(n-3)*...*2*1) + 1)$

    但是由于测试数据样例过多,所以每次从1到n循环一遍代价会很大,所以直接打表1-1000000, 然后最后在除以$log(m)$

    代码如下:

    #include<bits/stdc++.h>
    using namespace std;
    
    vector<double> res(1000007);
    
    void init()
    {
        double sum = 0;
        for(int i=1; i<=1000000; ++ i)
        {
            sum += log(i);
            res[i] = sum;
        }
    }
    
    void solve(int cases)
    {
        int n, m;
        scanf("%d%d", &n, &m);
    
        if(n == 0){
            printf("Case %d: %d
    ", cases, 1);
            return;
        }
        printf("Case %d: %d
    ", cases, int(res[n] / log(m) + 1));
    }
    
    int main()
    {
        //ios::sync_with_stdio(false);
    
        init();
    
        int t;
        scanf("%d", &t);
        for(int i=1; i<=t; ++ i)
            solve(i);
        return 0;
    }
    
    
  • 相关阅读:
    线程安全-003-对象锁的同步和异步
    线程安全-002-多个线程多把锁&类锁
    线程安全-001
    FastDFS单节点安装
    Nginx+Keepalived 实现高可用
    linux下配置nginx负载均衡例子
    linux下配置nginx反向代理例子
    Linux命令
    nginx配置文件 nginx.conf 说明
    CentOS安装Nginx 以及日志管理
  • 原文地址:https://www.cnblogs.com/aiterator/p/6724951.html
Copyright © 2011-2022 走看看