• HDU 6063


     比赛时候面向过题队伍数目 打表- -

    看了题解发现确实是这么回事,分析能力太差..

    /*
    HDU 6063 - RXD and math [ 数学,规律 ]  |  2017 Multi-University Training Contest 3
    题意:
    	求 Σ μ(i)^2 * sqrt( n^k/i ) [ 1 <= i<= n^k ]
    	n,k <= 1e18
    分析:
    	首先 μ(i) 为莫比乌斯函数,若 i 是完全平方数的倍数则 μ(i) = 0 ,否则 μ(i) = ±1
    	所以只有不是完全平方数的倍数的数才会对答案产生贡献
    	然后任何数都能表示为 x =  a^2*b,即仅为一个非完全平方数的b的平方倍数
    	n^k/i 代表 n^k 中 i 的倍数的个数
    	则 sqrt(n^k/i) 代表 i 的 平方倍数 的个数
    	联系前面的 x =  a^2*b ,可推得相当于每个数都只算了一次
    	故答案为 n^k
    */
    #include <bits/stdc++.h>
    using namespace std;
    #define LL long long
    const LL MOD = 1e9+7;
    LL PowMod(LL a, LL m)
    {
        a %= MOD;
        LL ret = 1;
        while (m)
        {
            if (m&1) ret = ret*a%MOD;
            a = a*a % MOD;
            m >>= 1;
        }
        return ret%MOD;
    }
    int main()
    {
        LL n, k;
        int tt = 0;
        while (~scanf("%lld%lld", &n, &k))
        {
            printf("Case #%d: %lld
    ", ++tt, PowMod(n, k));
        }
    }
    我自倾杯,君且随意
  • 相关阅读:
    Java中子类继承了父类的私有属性及方法吗?
    为什么静态成员、静态方法中不能用this和super关键字
    poj 3378 二维树状数组
    poj 3034 动态规划
    poj 2498 动态规划
    poj 2029 二维树状数组
    hdu 3280 动态规划
    hdu 2586 LCA
    poj 3689 树形dp
    poj 1947 树形dp
  • 原文地址:https://www.cnblogs.com/nicetomeetu/p/7273658.html
Copyright © 2020-2023  润新知