zoukankan      html  css  js  c++  java
  • LightOJ 1136 Sigma Function(唯一分解定理)

    题目链接

    分析

      由唯一分解定理可以得出,对于一个数(x),其约数和为:

    • (f(x)= (1+p_1+p_1^2+...+p_1^{a_1}) imes (1+p_2+p_2^2+...+p_2^{a_2}) imes ... imes (1+p_n+p_n^2+...+p_n^{a_n}))

      显然如果(p)(2)的话它的所有幂次和加上(1)的结果都是奇数,而其他的质数都是奇数,当它的最高幂次为偶数的时候,它的所有幂次之和加上(1)才是奇数,而只有上式中的所有每个括号里面的和都是奇数的情况下,(f(x))的值才会等于奇数。也就是说,如果(x)为一个平方数或者(x)为一个平方数乘以(2)的幂次的数,那么(f(x))的值一定是奇数。

    具体实现

      计算小于(n)的所有平方数好说,它为(sqrt(n)),但是还有乘以(2)的幂次的情况啊。其实,只要考虑乘以(2)的情况就行了,比如说一个平方数乘(4),那么这个数肯定是一个平方数,前面已经计算过了,再比如说一个平方数乘(8),其实就是乘(4)的那个平方数再乘(2)。所以排除掉平方数之后(f(x))为奇数的数的数量为(sqrt(n/2))

    int main(void) {
        int t,kase=1;
        scanf("%d", &t);
        while(t--) {
            ll n;
            scanf("%lld", &n);
            ll ans = n;
            ans -= (ll)sqrtl(n);
            ans -= (ll)sqrtl(n/2);
            printf("Case %d: %lld
    ", kase++, ans);
        }
        return 0;
    }
    
  • 相关阅读:
    android activity lifecycle
    android hal 分析
    android hardware.c 源码分析
    linux cpio
    android boot.img unpack pack
    imx6 android4.2 编译
    repo 安装
    repo manifest.xml 分析
    ElasticSearch 5.0.0 安装部署常见错误或问题
    elasticsearch 安装(基于java运行环境)
  • 原文地址:https://www.cnblogs.com/shuitiangong/p/12804484.html
Copyright © 2011-2022 走看看