# include <stdio.h>
int num[100005];
__int64 mod=1000000007;
__int64 pow(__int64 x,__int64 n)
{
int i;
__int64 s=1;
while(n)
{
if(n&1) s=s*x%mod;
x=x*x%mod;
n>>=1;
}
return s;
}
int main ()
{
__int64 n,x,sum=0;
scanf("%I64d %I64d",&n,&x);
int i;
for(i=1;i<=n;i++)
{
scanf("%I64d",&num[i]);
sum+=num[i];
}
sum-=num[n];
__int64 cnt=0,k,ans=0;
for(k=num[n];k;k--)
{
while(n&&k==num[n]) {n--;cnt++;}
if(cnt%x)
break;
sum++;
cnt/=x;
}
printf("%I64d\n",pow(x,sum));
return 0;
}
使用了快速幂的计算 (快速幂啊 时间复杂度为log2N)
Codeforces Round #209 (Div. 2), problem: (C) Prime Number
最新推荐文章于 2024-06-18 08:45:37 发布