zoukankan      html  css  js  c++  java
  • 刷刷刷

    数学刷刷刷

    1.Digits of Factorial

    题意大体是给一个(1e6)大小的(n)然后问其(n!)(k)进制位数。

    我感觉遇到阶乘,虽然不是经验主义,但是求位数大致应该是和(log_{10})有关的,所以我们先设所求答案为(x),那么显然可得$$n!<=k^{x}$$然后很显然,(n!)必然无法处理,那么又很显然,这两端都是许多个数相乘,重点在于他们相乘的数量多,那么我么们等式两边同时取(log_{10})

    [lg n!<=lg k^{x} ]

    [lg1 + lg2+lg3+···+lg n <= x imes lg k ]

    [frac{(lg1 + lg2+···+lg n)}{lg k}<=x ]

    解得(x)

    代码

    #include <iostream>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    typedef long long ll;
    const ll N = 1e6 + 9;
    double sum[N];
    int main() 
    {
        ll a, b, L;
        int cas = 0;
        int t;
        cin >> t;
        for (int i = 1; i <= 1e6; i++) {
            sum[i] = sum[i-1] + log(i);
        }
        while (t--) {
            int n;cin >> n;
            int base;cin >> base;
            cout << "Case " << ++cas << ": ";
            if (n == 0)cout << 1 << endl;
            else {
                cout << (int)(sum[n]/log(base)) + 1 << endl;
            }
        }
    }
    
  • 相关阅读:
    提问必备-如何有效的提问?
    通过jdbc驱动连接thriftserver
    在idea上使用springboot构建ssm项目(一)
    二柱子与他的计算题
    JavaScript
    表单格式化
    2020.10.09
    HTML书写规范
    下拉列表框 JComboBox
    用户登录界面
  • 原文地址:https://www.cnblogs.com/Xiao-yan/p/14110652.html
Copyright © 2011-2022 走看看