super_log

图片说明
图片说明

  • 题意:
  • 给出a,b,mod,让你输出(a^a^a.......^a)%mod,其中a一共有b个
  • 题意:
  • 递归扩展欧拉降幂公式
  • 代码:
    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long 
    const ll maxx = 1e6+100;
    ll phi[maxx];
    ll mods(ll x,ll mod){
      if(x < mod)
          return x;
      return x%mod+mod;
    }
    void init(){
      for(ll i=2;i<maxx;i++){
          if(!phi[i])
              for(ll j=i;j<maxx;j+=i){
                  if(!phi[j])
                      phi[j] = j;
                  phi[j] = phi[j]/i*(i-1);
              }
      }
    }
    ll pow_mod(ll a,ll b,ll mod){
      ll cnt=1;
      while(b){
          if(b&1)
              cnt=mods(cnt*a,mod);
          a=mods(a*a,mod);
          b>>=1;
      }
      return cnt;//这里就不要取模了
    }
    ll solve(ll a,ll b,ll mod)
    {
      if(mod == 1)
          return 1;
      if(b == 0)
          return 1;
      ll p = phi[mod];
      ll x = solve(a,b-1,p);
      return pow_mod(a,x,mod);
    }
    int main()
    {
      int t;
      phi[0]=0,phi[1]=1;
      init();
      scanf("%d",&t);
      while(t--)
      {
          ll a,b,mod;
          scanf("%lld%lld%lld",&a,&b,&mod);
          printf("%lld\n",solve(a,b,mod)%mod);
      }
      return 0;
    }
全部评论

相关推荐

2024-12-21 18:48
西安邮电大学 C++
黑皮白袜臭脚体育生:按使用了什么技术解决了什么问题,优化了什么性能指标来写会更好另外宣传下自己的开源仿b站微服务项目,GitHub已经390star,牛客上有完整文档教程
点赞 评论 收藏
分享
2024-12-21 10:42
已编辑
江西软件职业技术大学 Java
新宿站不停:该提升学历就提升学历,菜了就多练。没事找牛马公司虐自己是吧? 谁没事说自己“经验少”,这不自己把自己塞剎鼻hr嘴里找🐴吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务