HDU 6063 RXD and math (数论+快速幂)

原创 2017年10月05日 10:55:19

RXD and math

                                                                Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)
                                                                                      Total Submission(s): 1363    Accepted Submission(s): 747


Problem Description
RXD is a good mathematician.
One day he wants to calculate:
i=1nkμ2(i)×nki

output the answer module 109+7.
1n,k1018
μ(n)=1(n=1)

μ(n)=(1)k(n=p1p2pk)

μ(n)=0(otherwise)

p1,p2,p3pk are different prime numbers
 

Input
There are several test cases, please keep reading until EOF.
There are exact 10000 cases.
For each test case, there are 2 numbers n,k.
 

Output
For each test case, output "Case #x: y", which means the test case number and the answer.
 

Sample Input
10 10
 

Sample Output
Case #1: 999999937
 

题意很清楚,就是给你n和k输出结果。

大言不惭的说数论,其实我是找到的规律。

当n=1,k=1时, ans=1
当n=2,k=1时, ans=2
当n=3,k=1时, ans=3
当n=1,k=2时, ans=1
当n=2,k=2时, ans=4
当n=3,k=2时, ans=9

然后,就不用再写下去了,ans不就是n^k吗?然后就用快速幂出结果就OK了,然而还是WA,这里的N和K应该可能很大,所以一开始就可以超过int,然后快速幂的第一步就爆了long long 所以,要先对n取模,再进行快速幂。

后来才知道那个U的函数叫做莫比乌斯函数,好像好多人都是找规律得到的答案。

代码实现:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<cstdio>
#define ll long long
#define mset(a,x) memset(a,x,sizeof(a))

using namespace std;
const double PI=acos(-1);
const int inf=0x3f3f3f3f;
const double esp=1e-6;
const int maxn=1e5+5;
const int mod=1e9+7;
int dir[4][2]={0,1,1,0,0,-1,-1,0};
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
ll inv(ll b){if(b==1)return 1; return (mod-mod/b)*inv(mod%b)%mod;}
ll fpow(ll n,ll k){ll r=1;for(;k;k>>=1){if(k&1)r=r*n%mod;n=n*n%mod;}return r;}

int main()
{
	ll n,k,i,j,flag=1;
	while(~scanf("%lld%lld",&n,&k))
	{
		n=n%mod;
		ll ans=fpow(n,k);
		cout<<"Case #"<<flag++<<": "<<ans<<endl;
	}
	return 0;
}


版权声明:欢迎转载,请注明此博客地址。

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

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

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

HDU-2017 多校训练赛3-1008-RXD and math题目网址: HDU 6063 RXD and math题意分析: 初看到莫比乌斯函数..觉得和莫比乌斯函数..杜教筛有关..然后推不出...

hdu 6061 RXD and functions [快速数论变换]

RXD has a polynomial function f(x)f(x), f(x)=∑ni=0cixif(x)=∑i=0ncixi RXD has a transformation of fu...

【HDU5628】Clarke and math-狄利克雷卷积+快速幂

【HDU5628】Clarke and math-狄利克雷卷积+快速幂

hdu 5407 CRB and Candies(数论,LCM,快速幂取模,求逆元)

CRB and Candies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)...
  • acm_cxq
  • acm_cxq
  • 2016年06月13日 19:38
  • 245

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
  • 287

(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 6063 RXD and math (数论+快速幂)
举报原因:
原因补充:

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