(打表或数学)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++;
        }
    }
}
版权声明:本文为博主原创文章,未经博主 请随意转载!!

RXD and math(HDU 6063 快速幂)

RXD is a good mathematician. One day he wants to calculate: ∑i=1nkμ2(i)×⌊nki−−−√⌋ output the answer...
  • luyehao1
  • luyehao1
  • 2017年08月01日 21:09
  • 599

HDU 6063 RXD and math (打表)

RXD and math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) ...
  • Mr_Treeeee
  • Mr_Treeeee
  • 2017年08月01日 18:27
  • 170

HDU 6063 RXD and math【数学】

RXD and math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) T...
  • Puyar_
  • Puyar_
  • 2017年08月02日 09:43
  • 189

HDU 6063 RXD and math(数学 )

Input There are several test cases, please keep reading until EOF. There are exact 10000 cases. F...
  • lihao161530340
  • lihao161530340
  • 2017年08月01日 17:04
  • 636

HDU 6063 RXD and math

RXD and math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) ...
  • a15110103117
  • a15110103117
  • 2017年08月02日 10:16
  • 103

HDU 6063 RXD and math【快速幂】【打表找规律】

题目来戳呀Problem DescriptionRXD is a good mathematician. One day he wants to calculate: output the ans...
  • ppppublic
  • ppppublic
  • 2017年08月14日 16:25
  • 123

RXD and math HDU - 6063

Sample Input 10 10 Sample Output Case #1: 999999937打表找规律 快速幂#include using namespace std; #define...
  • Titanzyh
  • Titanzyh
  • 2017年08月01日 18:54
  • 105

HDU 6063 RXD and math 打表找规律 快速幂

题意没什么多说的,就是一个公式,计算这个公式的结果。         按照这个公式先来打个表处理一下看能得到一个怎样的结果,会发现: #include #include #include ...
  • lmhacm
  • lmhacm
  • 2017年08月01日 19:40
  • 113

多校3 HDU - 6063 RXD and math 数学

原题链接: HDU-6063RXD and mathTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (...
  • Joovo
  • Joovo
  • 2017年08月02日 15:16
  • 566

HDU 6063 RXD and math(快速幂)

RXD and math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) ...
  • ftx456789
  • ftx456789
  • 2017年08月23日 15:59
  • 89
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(打表或数学)HDU 6063 RXD and math
举报原因:
原因补充:

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