https://ac.nowcoder.com/acm/contest/9981/H


思路:欧拉降幂。

由于没怎么接触,补一下这块知识。

由于我们取个位数,所以对于本题目来说是mod10(p=10)

至于欧拉降幂的递归形式,就是如下面两个图所示.

举个小例子模拟一下:

还有一个问题。我们都是整数,这个题这么大,怎么看取多少位呢。

mod10递归几次就结束了,我们打不了取100层。

对于这个底数a。我们要观察。对于其%2这一层,相当于判奇偶,只要知道个位。

对于%4,则要个位和十位。解释:比如一个三位数x,那么其可以拆分成(k*100+num)%4=k*100%4+num%4;前者的mod为0;所以只考虑后者的num,也就是十位和百位。

我们对底数a取两位就好。

剩下来就是部分板子。

#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=1e5+1000;
typedef long long LL;
inline LL read(){LL x=0,f=1;char ch=getchar();   while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;}
LL phi[maxn],primes[maxn],cnt;
bool v[maxn];
void Euler(LL num){for(LL i=2;i<num;i++){if(!v[i]){primes[++cnt]=i;phi[i]=i-1;}for(LL j=1;j<=cnt;j++){if(primes[j]*i>num) break;v[primes[j]*i]=1;if(i%primes[j]==0) {phi[i*primes[j]]=phi[i]*primes[j];break;}phi[i*primes[j]]=phi[i]*(primes[j]-1);}}phi[1]=1;
}
LL q_pow(LL a,LL b,LL p){LL res=1;while(b){if(b&1) res=res*a>p?res*a%p+p:res*a;b>>=1;a=a*a>p?a*a%p+p:a*a;}return res;
}
LL solve(LL a,LL b,LL m){if(m==1||b==0) return 1;///phi(m)<m,所以m最后为1return q_pow(a,solve(a,b-1,phi[m]),m);
}
int main(void)
{Euler(100000);LL mod=10;string s1,s2;cin>>s1>>s2;LL len1=s1.size();LL len2=s2.size();LL a=0;for(LL i=max((LL)0,len1-3+1);i<len1;i++){a=a*10+(s1[i]-'0');}LL b=0;if(len2>=3) b=100;else{for(LL i=0;i<len2;i++){b=b*10+(s2[i]-'0');}}
///    debug(a);debug(b);debug(mod);cout<<solve(a,b,mod)%mod<<"\n";
return 0;
}

幂塔个位数的计算(欧拉降幂板子)相关推荐

  1. 幂塔的计算 (欧拉降幂)

    形如以下式子的东西叫做幂塔: a a a a . . . a^{a^{a^{a^{...}}}} aaaa... 题目 给定 a , n , m a,n,m a,n,m,计算 a a a的 n n n ...

  2. 【FZU - 1759】Super A^B mod C (数论,快速幂,快速乘,欧拉降幂,指数循环节,模板)

    题干: Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000000000,1&l ...

  3. 【2021牛客寒假第五场】C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和

    [2021牛客寒假第五场]C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和 前置技能 题意 思路 Code(715MS) 传送门: https://ac.nowcoder.com/ac ...

  4. HDU 4382 【矩阵快速幂】【欧拉降幂】

     自己的思路写的 102 × 102 大小的转化矩阵,好在线代学的还行想到用矩阵分块乘法过了- 看其他人的题解用的 3 × 3  构造一个 转化矩阵 T T T ,一个用来存储结果的 P P P  先 ...

  5. Product Oriented Recurrence(Codeforces Round #566 (Div. 2)E+矩阵快速幂+欧拉降幂)

    传送门 题目 fn=c2∗n−6fn−1fn−2fn−3\begin{aligned} &f_n=c^{2*n-6}f_{n-1}f_{n-2}f_{n-3}&\\ \end{alig ...

  6. 2019ICPC(南京) - super_log(欧拉降幂)

    题目链接:点击查看 题目大意:求(a^a^a^a....^a)%mod,其中有b个a 题目分析:一道数论题,被我们做成了模拟题..首先因为涉及到指数并且指数都还比较大,所以需要知道一个降幂公式: 我们 ...

  7. POJ2720_Last Digits_欧拉降幂公式打表

    题意 定义函数 f(x) = b^f(x-1) if x > 0, and f(0)=1.(a^b表示a的b次幂) 给定 b, i, n,求f(i) 的末n位 思路 首先末 n 位的意思就是 m ...

  8. 常见的几种求模运算(mod)——加减乘、除的小费马定理、指数的欧拉降幂

    在C/C++中,+,-的优先级低于/,*,%,而/,*,%优先级一样,所以就从左到右 1.乘法 我们在做题的时候,遇到(a*b)%c,由于可能a*b先计算的话,会超精度,所以我们可以这么转化 (a*b ...

  9. BZOJ 3884: 上帝与集合的正确用法 欧拉降幂

    根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作"α".&q ...

最新文章

  1. 网络营销外包专员浅析响应式网站建设应注意哪些网络营销外包细节
  2. Android Studio环境搭建
  3. Morphia - mongodb之ORM框架
  4. linux 日记函数,每日记一些php函数,jQuery函数和linux命令(一)
  5. javascript 函数整理
  6. #python练习实例0:制作1-100随机抽取3个数字排队列
  7. python3.8如何安装jieba库_安装jieba、wordcloud等第三方库
  8. 换硬盘也杀不掉的“BMW病毒”现身 危害远超CIH_360安全公告
  9. 螳螂科技产研分享:做有生命力的SaaS产品架构
  10. VLAN中SVL和IVL的区别
  11. Service的两种启动方式
  12. K8S集群中Pod资源处于CrashLoopBackOff状态排查思路
  13. “你公众号被封了!”
  14. ffmpeg如何实现MP3转码g711a
  15. 青少年科技大赛 计算机课题,科技活动----22届青少年科技创新大赛中的活动方案3...
  16. 利用平台系统运营店铺五大法则
  17. MStar平台编译环境安装
  18. 人性的弱点 --卡耐基
  19. z420开机无法进入BIOS,出现A9和光标
  20. mysql中Long类型日期比较大小

热门文章

  1. 2022年PMP考试会考试第七版本吗?
  2. 商品详情页面展示的多元化
  3. 怎么把php转变成word文档,表格怎么转换成word文档
  4. 卅三先生的工程电磁场讲座.EEm04——电势能001
  5. 翻译软件 Babylon Pro V6.0.0 R32免安装版
  6. GB/T 34844壁纸
  7. bridge 的运用和数码照片的处理
  8. putty乱码解决方案
  9. nes模拟器java版_【Java JDK和VirtuaNES(FC模拟器)哪个好用】Java JDK和VirtuaNES(FC模拟器)对比-ZOL下载...
  10. 【操作系统】思维导图