17暑假多校联赛3.8 HDU 6063 RXD and math

xiaoxiao2021-02-27  151

RXD and math

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)  

Problem Description

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  

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

  题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=6063  

分析

题意:根据给定的公式,求解 比较迷的一道题,推公式推不出来,然后打表发现,就是求n的k次方,直接用整数快速幂,不会的话点超链接看看,记得不断取模  

代码

#include <bits/stdc++.h> using namespace std; long long MOD=1e9+7; long long poww(long long a,long long b) { long long ans=1,res=a; while(b!=0) { if(b&1!=0)ans=(ans*(res%MOD))%MOD; res=((res%MOD)*(res%MOD))%MOD; b>>=1; } return ans; } int main() { long long n,k,i=0; while(~scanf("%lld%lld",&n,&k)) { printf("Case #%lld: %lld\n",++i,poww(n,k)); } }
转载请注明原文地址: https://www.6miu.com/read-16349.html

最新回复(0)