(打表或数学)HDU 6063 RXD and math

原创 2017年08月02日 00:12:15

HDU-2017 多校训练赛3-1008-RXD and math

题目网址: HDU 6063 RXD and math

题意分析:

  • 初看到莫比乌斯函数..觉得和莫比乌斯函数..杜教筛有关..然后推不出来
  • 后来.. 上苍告诉我, 标准的公式, 何不打个表看看规律!!?
  • 然后发现本题只是求 n^k次方, 快速幂即可解决
  • 打表过程在代码中

BTW: Bestcoder的题解附上(虽然我没看懂…)

代码:

#include <iostream>
#include <cmath>

using namespace std;

#define ll long long

const ll mod = 1e9+7;

void seeTable(); // 打表找规律

ll quickpower(ll n, ll k)
{
    ll ans = 1;
    n %= mod;
    while (k)
    {
        if(k & 1) ans = (ans * n) % mod;
        k >>= 1;
        n = (n*n) % mod;
    }
    return ans;
}

int main(int argc, char const *argv[])
{
    // seeTable();  // 打表可知, 其实求的就是n^k

    ll n, k;
    int cnt = 1;
    while (~scanf("%I64d %I64d", &n, &k))
    {
        printf("Case #%d: ", cnt++);
        printf("%I64d\n", quickpower(n, k));
    }
    return 0;
}


void seeTable()
{
    for(int n = 2; n < 6; ++n)
    {
        int k = 1;
        while (k < 11)
        {
            int nk = pow(n, k);
            int sum = 0;

            for (int i = 1; i <= nk; ++i)
            {
                int tmp = i;
                bool flag = true;
                for (int i = 2; tmp != 1; ++i)
                {
                    int cnt = 0; // 记录有多少个相同的素数
                    while (tmp % i == 0)
                    {
                        ++cnt;
                        if(cnt > 1) 
                        {
                            flag = false;
                        }
                        tmp /= i;
                    }
                }
                if(flag)
                { // 每个素数只出现一次
                    sum += (int)sqrt((double)nk/(double)i);
                }
            }
            printf("n=%-3d k=%-3d \t n^k=%-8d \t result=%d\n", n, k, nk, sum);
            printf("==============================================================\n");
            k++;
        }
    }
}
版权声明:本文为博主原创文章,未经博主 请随意转载!!

HDU 5055 Bob and math problem 数学题

Bob and math problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot...

hdu 6060 RXD and dividing

链接题意:有一颗n个节点的树,现在将节点2-n分成k组,定义每组的的权值为该组内所有点加编号为1的节点相互连接所经过的边的权值的和,求k组点集最大的和。分析:使用贪心的思想,我们思考每条边对最终答案的...

RXD and dividing(HDU 6060)

RXD has a tree T, with the size of n. Each edge has a cost. Define f(S) as the the cost of the minim...

[HDU] 6061 RXD and functions [NTT]

URL: http://acm.split.hdu.edu.cn/showproblem.php?pid=6061 Time Limit: 4000/2000 MS (Java/Others) ...
  • ctsas
  • ctsas
  • 2017年08月07日 22:40
  • 284

(2017多校训练第三场)HDU - 6060 RXD and dividing dfs

官方题解: 把1看成整棵树的根. 问题相当于把 2∼n2\sim n2∼n每个点一个[1,k][1, k][1,k]的标号. 然后根据最小斯坦纳树的定义, (x,fax)(x, fa_x)(x...

hdu 6060 RXD and dividing(dfs)

RXD and dividing Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Othe...

HDU 6064 RXD and numbers(BEST theorem)

RXD and numbersTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)...
  • Yasola
  • Yasola
  • 2017年08月02日 11:09
  • 467

HDU 6065 RXD, tree and sequence DP 减少转移情况

给一颗有根树,根节点为1,再给定一个排列,长度为n,要求将排列切分成K段,定义每段的价值为该排列所有点及两两点之间lca中最浅节点的深度。要求输出K段区间所有可能的价值和中的最小值。n*K 解法: ...

HDU_6060 RXD and dividing 【DFS】

题目链接 题目描述给一棵树T,有n个结点。 给一个k,表示有k个集合,我们需要把2,3,4,…n号节点放入集合,要保证k个集合的并集等于{2,3,4,5n},并且集合互不相交。(集合可以为空) 然...

2017 多小训练第三场 HDU 6061 RXD and functions

NTT #include using namespace std; typedef long long ll; const int mod=998244353; const int maxn=4e...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(打表或数学)HDU 6063 RXD and math
举报原因:
原因补充:

(最多只允许输入30个字)