首页 > 编程知识 正文

RXD and math

时间:2023-05-04 15:01:54 阅读:223040 作者:1763

题目链接  http://acm.pdsu.edu.cn/problem.php?cid=1027&pid=7

RXD and math 时间限制: 2 Sec   内存限制: 128 MB
提交: 25   解决: 21
[ 提交][ 状态][ 讨论版] 题目描述 RXD is a good mathematician.
One day he wants to calculate:
∑i=1nkμ2(i)×⌊nki−−−√⌋
output the answer module  109+7 .
1≤n,k≤1018
μ(n)=1(n=1)
μ(n)=(−1)k(n=p1p2…pk)
μ(n)=0(otherwise)
p1,p2,p3…pk  are different prime numbers 输入 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 . 输出 For each test case, output "Case #x: y", which means the test case number and the answer. 样例输入 10 10 样例输出 Case #1: 999999937 解题思路:

公式化简后,就是n^k。也就是说该题是求n^k.。是快速幂的应用,如果不会快速幂,且想快速学会快速幂的代码,那么请点击链接  http://blog.csdn.net/jiyi_xiaoli/article/details/76587519   如果想详细的理解快速幂,那么请点击链接  http://blog.csdn.net/jiyi_xiaoli/article/details/76578376

代码:

#include<iostream>using namespace std;const long long int mod=1e9+7;int pow(long long int a,long long int n){ long long int t=1; while(n) { if(n&1) t=(t%mod)*(a%mod)%mod; n=n>>1; a=(a%mod)*(a%mod); } return t;}int main(){ long long int n,k; int i=0; while(cin>>n>>k) { i++; cout<<"Case #"<<i<<": "; cout<<pow(n,k)<<endl; } return 0;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。