多校6050 Funny Function

来源:互联网 发布:mac魔兽世界设置 编辑:程序博客网 时间:2024/05/01 12:44

主要是队友厉害的推出了公式。。。。

#include <iostream>#include <iostream>#include <algorithm>#include <stdio.h>using namespace std;const long long mod = 1e9+7;long long f(long long x,long long k){    if (k==0) return 1;    if (k&1)     {        return f(x,k-1)*x%mod;    }else {      long long t=f(x,k/2);      return t*t%mod;    } }void exgcd(long long a,long long b,long long &x,long long &y){    if (!b) {        x=1;y=0;        return;    }    exgcd(b,a%b,y,x);    y-=x*(a/b);}long long x,y;int main(){    int T;    exgcd(3,mod,x,y);    x=(x+mod)%mod;    long long n3=x;    scanf("%d",&T);    while (T--)    {        long long  n,m;        scanf("%I64d%I64d",&n,&m);        long long k1=(f(2,n)-1+mod)%mod;        long long tmp1=2*f(k1,m-1)%mod;        //cout<<tmp1<<endl;        if (n&1)        {            //long long tmp2=f(-1,m-1);            printf("%I64d\n",(tmp1+1+mod)%mod*n3%mod);        }else printf("%I64d\n",tmp1*n3%mod);    }}
原创粉丝点击