题目大意
给你一个数学式子,要求计(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));
}
}
本文探讨了一种数学式的计算方法,通过将任意数表示为a^2*b的形式,并利用μ(b)=1的特性,有效地简化了计算过程。最终得出答案为n^k,提供了一段C++代码实现。
975

被折叠的 条评论
为什么被折叠?



