题意:

已知\(f(0)=1,f(n)=(n\%10)^{f(n/10)}\),求\(f(n)\mod m\)

思路:

由扩展欧拉定理可知:当\(b>=m\)时,\(a^b\equiv a^{b\%\varphi(m)+\varphi(m)}\mod m\),那么我们可以通过这个式子直接去递归求解。
在递归的时候每次给下一个的模数都是\(phi(mod)\),那么我们求出来之后,怎么知道要不要再加\(phi(m)\)?
我们可以在每次返回的时候用一个特殊的快速幂返回正确的值。然后每次特判返回值的时候都要一样:

a = mod? a % mod + mod : a

ll ksm(ll a, ll b, ll mod){ll ret = 1;while(b){if(b & 1) ret = ret * a;if(ret >= mod){ret = ret % mod + mod;}a = a * a;if(a >= mod){a = a % mod + mod;}b >>= 1;}return ret;
}

代码:

#include<map>
#include<set>
#include<queue>
#include<cmath>
#include<stack>
#include<ctime>
#include<vector>
#include<cstdio>
#include<string>
#include<cstring>
#include<sstream>
#include<iostream>
#include<algorithm>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int maxn = 1e5 + 5;
const int MAXM = 3e6;
const ll MOD = 998244353;
const ull seed = 131;
const int INF = 0x3f3f3f3f;ll euler(ll n){ll res = n, a = n;for(int i = 2; i * i <= a; i++){if(a % i == 0){res = res / i * (i - 1);while(a % i == 0) a/= i;}}if(a > 1) res = res / a * (a - 1);return res;
}
ll ksm(ll a, ll b, ll mod){ll ret = 1;while(b){if(b & 1) ret = ret * a;if(ret >= mod){ret = ret % mod + mod;}a = a * a;if(a >= mod){a = a % mod + mod;}b >>= 1;}return ret;
}
ll f(ll a, ll mod){if(a == 0) return 1 >= mod? 1 % mod + mod : 1;if(mod == 1) return a >= mod? a % mod + mod : a;    //剪枝ll phm = euler(mod);ll b = f(a / 10, phm);return ksm(a % 10, b, mod);
}
int main(){int T;scanf("%d", &T);while(T--){ll n, m;scanf("%lld%lld", &n, &m);printf("%lld\n", f(n, m) % m);  //这里要取模}return 0;
}

转载于:https://www.cnblogs.com/KirinSB/p/11517956.html

HDU2837 Calculation(指数循环节)题解相关推荐

  1. FUZ 1759 Super A^B mod C (指数循环节/模板)

    题意:求A^B mod C,其中(1<=A,C<=1000000000,1<=B<=10^1000000). 思路: 在有些题目中我们需要对指数进行降幂处理才能计算.比如计算 ...

  2. 嫦娥奔月(KMP,找循环节)及其扩展KMP

    问题描述 <归妹>卦辞为:昔者恒我(姮娥)窃毋死之药于西王母,服之以(奔)月.将往,而枚占于有黄.有黄占之曰:"吉.翩翩归妹,独将西行.逢天晦芒,毋惊毋恐,后且大昌". ...

  3. 2019牛客暑期多校训练营(第九场)A——The power of Fibonacci(循环节+中国剩余定理(互质)||广义BM)

    链接:https://ac.nowcoder.com/acm/contest/889/A 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言5242 ...

  4. HDU 3068 2017 Multi-University Training Contest - Team 1 1006 Fuction: 循环节+最后一步

    题意:给出一个0..n-1的全排列a,给出一个0..m-1的全排列b,现在要求计算函数F(定义域0..n-1 值域0..m-1)的个数,使得对所有的0..n-1的 i 都有 F(i)=b(F(ai)) ...

  5. 编程题:寻找无限循环小数的循环节及长度

    题目描述 给定正整数a, b,如果a 除以 b 结果为无限循环小数,求解该无限循环小数的循环节及其长度. 题解思路 模拟长除法的计算过程. 利用长除法求解 3/7,具体如下图: 求解算法描述 被除数除 ...

  6. 欧拉函数求一个数倒数的循环节长度

    首先,费马小定理a与p互素,则a^(p-1)≡1(mod p)  对于一个素数p,取a=10,那么10^(p-1)≡1(mod p)  如果找到一个正整数e使得10^e/p-1/p为整数,那么e就是1 ...

  7. 求循环小数的表示以及循环节长度

    问题:输入整数a和b,输出a/b的循环小数表示以及其循环节长度.例如 a=5 b=43 小数表示为0.(116279069767441860465),循环节长度为21 分析:模拟长除法的计算过程. ① ...

  8. 薛XX后代的IQ CSU1597【循环节】或【快速幂】

    薛先生的后代IQ[循环节]||[快速幂] 薛先生想改变后代的IQ,为此他发明了一种药,这种药有三种属性:A, B, P.他父亲的智商为X,薛先生的智商为Y,用了这种药之后,薛先生的孩子的智商就可以变为 ...

  9. hdu4291 暴力循环节+矩阵快速幂

    题意:       给你一个关系式,x[n] = 3*x[n-1] + x[n-2],求x(x(x[n]))%1000000007. 思路:       做这个题目要明确一点,就是对于取余操作大多数时 ...

  10. 【音频处理】Polyphone 样本编辑 和 样本工具 ( 波形图 | 信息 | 频率分析 | 均衡器 | 播放器 | 终点裁剪 | 自动循环节 | 空白移除 | 音量 平衡 音调 调整 )

    文章目录 一. Polyphone 工具简介 1. 相关参考资料 2. 简要介绍 (1) 软件界面 二. 音源编辑 1. 波形图 ( 1 ) 波形图样式 ( 2 ) 波形图操作 2. 信息 ( 1 ) ...

最新文章

  1. 简单几何(线段覆盖) POJ 3347 Kadj Squares
  2. 风云编程python-动态排名可视化——带你领略编程语言20年风云变化
  3. python2.x环境下unicode乱码转中文显示的2种解决方案总结
  4. linux内核启动失败,裁剪后montavistalinux内核 nfs启动失败
  5. mysql 修改这段长度_MySQL中使用group_concat()函数数据被截取(有默认长度限制),谨慎!...
  6. 2020年Tor Project的加密货币捐款增加23%达23万美元
  7. python vtk实时更新点云_Python-VTK:点云和颜色b
  8. mysql--创建表,插入数据,修改表名,删除表,简单查询/内连接、左/右连接
  9. Paip.最佳实践-- Buildin variale 内建变量 ,魔术变量,预定义变量,系统常量,系统变量 1
  10. 单片微型计算机原理及应用考试,单片机原理及应用《微机原理及应用》试卷(A卷)附答案...
  11. idea 2022年使用教程
  12. 设计模式之实验二: 创建型设计模式实验
  13. mysql 查询临时表_MySQL临时表与内存表
  14. 如何在阿里云服务器上安装爱快软路由系统
  15. [转]C#中的global关键字(global::)
  16. A - Linearization of the kernel functions in SVM (模拟)
  17. 网络共享里的计算机无法打开,局域网共享文件夹打不开怎么办
  18. 谈谈c语言中delay的用法
  19. 怎么申请企业邮箱账号?企业邮箱怎么注册申请?
  20. C#有关字符串和路径的拼接

热门文章

  1. 自己定义android 4.0以上的对话框风格
  2. Hadoop2.2.0--Hadoop Federation、Automatic HA、Yarn完全分布式集群结构
  3. ERP开发分享 1 数据库表设计
  4. 深度LINUX不喜欢
  5. [转]整理关于java的String 类,equals函数和比较操作符的区别
  6. MySQL essential版本和普通版本有什么区别?
  7. 用OCR技术识别验证码---tesseract
  8. 16个 Redis 常见使用场景,面试有内容聊啦
  9. 你还在用 BeanUtils?试试 MapStruct,优雅的对象转换解决方案!
  10. 网上找的一段代码突然爆了,项目出现大Bug!