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

标签: 数论 快速幂
514人阅读 评论(0) 收藏 举报
分类:

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(思维)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6063题目大意: 求式子∑nki=1μ2(i)×⌊nki−−√⌋\sum_{i=1}^{n^k}\...
  • SD_Stjean
  • SD_Stjean
  • 2017-08-02 23:45:23
  • 338

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:11
  • 96

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:09
  • 640

HDU 6063 RXD and math(数论)

Description Input 多组用例,每组用例输入两个整数n和k,以文件尾结束输入(T...
  • V5ZSQ
  • V5ZSQ
  • 2017-08-06 17:13:08
  • 237

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:36
  • 116

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:08
  • 118

hdu 6063 RXD and math (迷之 快速幂)

题中μ(i)函数是多校二里出现过的莫比乌斯反演函数(没弄懂),不过有模板,照着打个表然后瞎暴力一下看看上面式子的结果,发现结果就是直接n的k次幂。 发现结果赶紧套了个快速幂的模板,直接WA,难道不是这...
  • protecteyesight
  • protecteyesight
  • 2017-08-01 19:53:18
  • 143

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:22
  • 137

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

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

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:12
  • 663
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 6万+
    积分: 2252
    排名: 2万+
    联系方式
    欢迎谈论交流:1245985209
    博客专栏