码迷,mamicode.com
首页 > 其他好文 > 详细

CF1361B

时间:2021-01-15 12:03:41      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:sign   void   ns2   ace   main   space   std   long   putc   

#include<bits/stdc++.h>
using namespace std;
const long long mod=1e9+7;
const long long mod2 = 1e8+7;
const long long N  =1e6+10;
void in(long long &x){
    long long y=1;char c=getchar();x=0;
    while(c<‘0‘||c>‘9‘){if(c==‘-‘)y=-1;c=getchar();}
    while(c<=‘9‘&&c>=‘0‘){ x=(x<<1)+(x<<3)+c-‘0‘;c=getchar();}
    x*=y;
}
void o(long long x){
    if(x<0){putchar(‘-‘);x=-x;}
    if(x>9)o(x/10);
    putchar(x%10+‘0‘);
}
long long fastpower(long long x,long long k,long long mod){
    long long res=1;
    while(k>0){
        if(k&1)res*=x;
        res%=mod;
        x*=x;x%=mod;
        k>>=1;
    }
    return res;
}
long long t, n, p;
long long a[N];
signed main(){
    in(t);
    while(t--){
        in(n);in(p);

        for(long long i=1;i<=n;i++)in(a[i]);
        sort(a+1,a+n+1);

        long long ans1=0,ans2=0;
        for(long long i=n;i>=1;i--){
            if(ans1 == 0 && ans2 == 0){
                ans1+=fastpower(p,a[i],mod);
                ans2+=fastpower(p,a[i],mod2);
            }else{
                ans1-=fastpower(p,a[i],mod);ans1+=mod;ans1%=mod;
                ans2-=fastpower(p,a[i],mod2);ans2+=mod2;ans2%=mod2;
            }
        }

        o(ans1);putchar(‘\n‘);
    }
    return 0;
}

CF1361B

标签:sign   void   ns2   ace   main   space   std   long   putc   

原文地址:https://www.cnblogs.com/yesuweiYYYY/p/14279310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!