题目大意
给你一个数学式子,要求计(zhao)算(chu)出(jie)来(lun)。
显然
任意数可唯一表示成a^2*b,其中
μ(b)=1
式子相当于在枚举b,后面乘的系数是a的范围。
那么每个数都被算一次,答案是n^k。
#include<cstdio>
#include<algorithm>
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
typedef long long ll;
const int mo=1000000007;
ll n,k;
int qsm(ll x,ll y){
if (!y) return 1;
int t=qsm(x,y/2);
t=(ll)t*t%mo;
if (y%2) t=(ll)t*(x%mo)%mo;
return t;
}
int main(){
int wdc=0;
while (scanf("%lld%lld",&n,&k)!=EOF){
/*if (n%mo==0){
printf("0\n");
continue;
}*/
//n%=mo;
//k%=(mo-1);
wdc++;
printf("Case #%d: %d\n",wdc,qsm(n,k));
}
}