ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

多校联训12

2022-08-13 16:31:14  阅读:133  来源: 互联网

标签:qpow 12 ll 多校 联训 ans lld fz mod


rank 56 grade 146

T1:水题二分

T2:数论

T2:定义f(f(f(f(x)))).....是f(x)迭代n次的结果,f(x)=(x+1/x)/2.给出多组n,x,求f(x)这样迭代n-1的结果。(n<=1e18,x<=1e18)

x= \(\frac{a}{b}\) ,原式可以化为\(\frac{a^{2}+b^{2}}{2*ab}\),假设f2(x)=a2/b2,发现a2+b2=\((a+b)^{2}\),a2-b2=\((a-b)^{2}\),那么就可以得到fn(x)=an/bn,an+bn=\((a+b)^{2^{n-1}}\),an-bn=\((a-b)^{2^{n-1}}\),可以用快速幂解决。注意在计算指数的时候,是qpow(2,n-1,mod-1)模数是mod-1,因为,当gcd(a,p)=1,有\(a^{b}\equiv\) $ a^{b mod phi(p)}$(mod p),又因为p是质数,所以phi(p)=p-1,所以mod (p-1)

const ll mod=1e9+7,n2=500000004;
ll x,n;
inline ll qpow(ll a,ll b,ll md){
    ll ans=1;
    //b%=md;
    while(b){
        if(b&1){
            ans=ans*a%md;
        }
        b>>=1;
        a=a*a%md;
    }
    return ans;
}
int main()
{
    //freopen("c.out","w",stdout);
    int T=re();
    while(T--){
        x=re(),n=re();
        ll a=x,b=1;ll aa=x,bb=1;n=qpow(2,n-1,mod-1);
        a=qpow(aa+bb,n,mod);b=qpow(aa-bb,n,mod);
      //  chu("a:%lld b:%lld\n",a,b);
        ll fz=(a+b)*n2%mod,fm=(fz-b+mod)%mod;
        //chu("fz:%lld fm:%lld\n",fz,fm);
        chu("%lld\n",fz*qpow(fm,mod-2,mod)%mod);
    }
	return 0;
}

标签:qpow,12,ll,多校,联训,ans,lld,fz,mod
来源: https://www.cnblogs.com/403caorong/p/16583390.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有